[Release] ProcessASM menu

User Tag List

Results 1 to 11 of 11
  1. #1
    bigtimt's Avatar Active Member
    Reputation
    41
    Join Date
    Mar 2008
    Posts
    100
    Thanks G/R
    2/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    [Release] ProcessASM

    this is a nifty little assembly i made to compile asm files into bytecode

    RapidShare: Easy Filehosting

    Credits:
    Me
    FASM

    and Nesox for testing!

    examples:
    Code:
    
        Public ASM as New ProcessASM(Process.Start("C:Program FilesWorld of WarcraftWow.exe"))
    
        Public Sub Test()
            RunScript("DoEmote(""dance"")")
        End Sub
    
        Public Sub UpdateCurMgr()
            With ASM
                .Asm("mov EDX, [0x00D43318]")
                .Asm("mov EDX, [EDX+0x2218]")
                .Asm("FS mov EAX, [0x2C]")
                .Asm("mov EAX, [EAX]")
                .Asm("add EAX, 8")
                .Asm("mov [EAX], EDX")
            End With
        End Sub
    
        Public Sub RunScript(ByVal Script As String)
            Dim pScript As Int32 = ASM.AllocateMemory(256)
            ASM.WriteString(pScript, Script)
    
            UpdateCurMgr()
            With ASM
                .Asm("mov ecx, 0x0088C301")
                .Asm("mov eax, " & pScript)
                .Asm("push ecx")
                .Asm("push eax")
                .Asm("push eax")
                .Asm("mov eax, 0x00706C80")
                .Asm("call eax")
                .Asm("add esp, 0xC")
                .Execute()
            End With
        End Sub

    Code:
    flat assembler version 1.67
    Copyright (c) 1999-2007, Tomasz Grysztar.
    All rights reserved.
    
    This program is free for commercial and non-commercial use as long as
    the following conditions are adhered to.
    
    Copyright remains Tomasz Grysztar, and as such any Copyright notices
    in the code are not to be removed.
    
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are
    met:
    
    1. Redistributions of source code must retain the above copyright notice,
    this list of conditions and the following disclaimer.
    2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.
    
    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
    TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
    PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    
    The licence and distribution terms for any publically available
    version or derivative of this code cannot be changed. i.e. this code
    cannot simply be copied and put under another distribution licence
    (including the GNU Public Licence).
    Last edited by bigtimt; 10-09-2008 at 06:43 AM.

    [Release] ProcessASM
  2. #2
    Nesox's Avatar ★ Elder ★
    Reputation
    1280
    Join Date
    Mar 2007
    Posts
    1,238
    Thanks G/R
    0/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by bigtimt View Post
    this is a nifty little assembly i made to compile asm files into bytecode

    RapidShare: Easy Filehosting

    Credits:
    Me
    FASM

    and Nesox for testing!

    examples:
    Code:
    
        Public ASM as New ProcessASM(Process.Start("C:Program FilesWorld of WarcraftWow.exe"))
    
        Public Sub Test()
            RunScript("DoEmote(""dance"")")
        End Sub
    
        Public Sub UpdateCurMgr()
            With ASM
                .Asm("mov EDX, [0x00D43318]")
                .Asm("mov EDX, [EDX+0x2218]")
                .Asm("FS mov EAX, [0x2C]")
                .Asm("mov EAX, [EAX]")
                .Asm("add EAX, 8")
                .Asm("mov [EAX], EDX")
            End With
        End Sub
    
        Public Sub RunScript(ByVal Script As String)
            Dim pScript As Int32 = ASM.AllocateMemory(256)
            ASM.WriteString(pScript, Script)
    
            UpdateCurMgr()
            With ASM
                .Asm("mov ecx, 0x0088C301")
                .Asm("mov eax, " & pScript)
                .Asm("push ecx")
                .Asm("push eax")
                .Asm("push eax")
                .Asm("mov eax, 0x00706C80")
                .Asm("call eax")
                .Asm("add esp, 0xC")
                .Execute()
            End With
        End Sub
    ah nice one altho some scripts i wasnt able to run

  3. #3
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1356
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Interesting.

    Without taking a look at the source, I'm curious. What are you using to convert the mnemonics into their hex opcodes?

  4. #4
    Shynd's Avatar Contributor
    Reputation
    97
    Join Date
    May 2008
    Posts
    393
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    It would seem that he has embedded Flat Assembler (FASM) as a resource. He copies it to disk as "temp.dat", copies his ASM buffer to disk as "temp2.dat", then executes FASM which converts mnemonics to opcodes. I'm pretty sure he kinda forgot to include the ****ing FASM License, so here it is just in case:

    flat assembler version 1.67
    Copyright (c) 1999-2007, Tomasz Grysztar.
    All rights reserved.

    This program is free for commercial and non-commercial use as long as
    the following conditions are adhered to.

    Copyright remains Tomasz Grysztar, and as such any Copyright notices
    in the code are not to be removed.

    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are
    met:

    1. Redistributions of source code must retain the above copyright notice,
    this list of conditions and the following disclaimer.
    2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.

    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
    TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
    PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

    The licence and distribution terms for any publically available
    version or derivative of this code cannot be changed. i.e. this code
    cannot simply be copied and put under another distribution licence
    (including the GNU Public Licence).
    God damned despicable.

  5. #5
    hypnodok's Avatar Member
    Reputation
    19
    Join Date
    Nov 2007
    Posts
    65
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Without taking a further look at it, can this be used to call protected Lua functions?

  6. #6
    bigtimt's Avatar Active Member
    Reputation
    41
    Join Date
    Mar 2008
    Posts
    100
    Thanks G/R
    2/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    no it can't

  7. #7
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1356
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Actually yes it can.

    You can call protected functions via one of WoW's internal functions from memory. I personally just patch the protection check but if you choose to do it via a function call then this could probably do the trick. (Assuming you know the function to call and its prototype)

  8. #8
    Shynd's Avatar Contributor
    Reputation
    97
    Join Date
    May 2008
    Posts
    393
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I didn't really like your implementation of having to write to disk, execute FASM.exe, read from disk, etc., so I wrote a managed wrapper around FASM.DLL that the author of FASM, Thomas Grysztar, wrote and released on the flatassembler.net message board. Here it is, source, binaries, and test project included.

    Flat Assembler compiled as a DLL (posted on the flatassembler.net message boards and compiled with version 1.67.27 by Shynd)
    Managed wrapper for the Flat Assembler DLL

    The unmanaged code in fasmdll_managed.cpp also shows how to call FASM.dll from unmanaged C/++. This is by no means release-quality, really more of a proof-of-concept, but effective nonetheless. Please see this post on the flatassembler.net message board for more information.



    Usage:
    Code:
    Fasm.ManagedFasm fasm = new Fasm.ManagedFasm();
    //the forward slashes in the line below should be backslashes...
    //stupid forum parses out all backslashes so they don't show
    byte[] a = fasm.Assemble("use32/nxor eax, eax/nmov ebx, eax/nmov ecx, eax/nmov edx, eax/nretn");
    
    for (int i = 0; i < a.Length; i++)
    	Console.Write("{0:X02} ", a[i]);
    Console.WriteLine();

  9. #9
    bigtimt's Avatar Active Member
    Reputation
    41
    Join Date
    Mar 2008
    Posts
    100
    Thanks G/R
    2/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    oh cool thanks shynd, didn't even think to see if there was a fasm.dll, this will increase speed greatly

  10. #10
    Shynd's Avatar Contributor
    Reputation
    97
    Join Date
    May 2008
    Posts
    393
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

  11. #11
    Meaf's Avatar Member
    Reputation
    2
    Join Date
    Oct 2008
    Posts
    11
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    thanks for this one

Similar Threads

  1. [Release] Herbs to flag
    By Dave-evad in forum World of Warcraft Model Editing
    Replies: 9
    Last Post: 11-26-2006, 03:31 PM
  2. Burning Crusdade Release Date!
    By codydude815 in forum World of Warcraft General
    Replies: 22
    Last Post: 10-30-2006, 01:59 PM
  3. anti-warden Release #1
    By zhPaul in forum World of Warcraft Bots and Programs
    Replies: 40
    Last Post: 10-21-2006, 01:40 AM
  4. Burning Crusade Release
    By KOLOSSAL in forum World of Warcraft General
    Replies: 3
    Last Post: 10-10-2006, 12:33 AM
All times are GMT -5. The time now is 01:21 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search