any reason why this is crashin wow? menu

User Tag List

Page 1 of 2 12 LastLast
Results 1 to 15 of 20
  1. #1
    Nokia5800's Avatar Member
    Reputation
    -4
    Join Date
    Jun 2009
    Posts
    16
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    any reason why this is crashin wow?

    hey yall

    quick question, Im not usually the one to be injecting and all, but I just cant resist myself, Lua_dostring just looks so cool, so I wanted to try it..

    But im not sure if I have it correct as far as some of the asm goes.. let me know if this needs to be updated at all...

    Code:
      Main.wow.Asm.Clear
                Main.wow.Asm.AddLine("mov EDX, [0x01139F80]")
                Main.wow.Asm.AddLine("mov EDX, [EDX+0x2C34]")
                Main.wow.Asm.AddLine("FS mov EAX, [0x2C]")
                Main.wow.Asm.AddLine("mov EAX, [EAX]")
                Main.wow.Asm.AddLine("add EAX, 0x10")
                Main.wow.Asm.AddLine("mov [EAX], EDX")
                Main.wow.Asm.AddLine("push {0}", New Object() { 0 })
                Main.wow.Asm.AddLine("mov eax, {0}", New Object() { (dwAddress + 0x200) })
                Main.wow.Asm.AddLine("push eax")
                Main.wow.Asm.AddLine("push eax")
                Main.wow.Asm.AddLine("call {0}", New Object() { "0x0049AAB0" })
                Main.wow.Asm.AddLine("add esp, 0xC")
                Main.wow.Asm.AddLine("retn")
    This is just the asm injection part.. I know the allocation is fine, but I think one of the instructions is out of date,, let me know guys if you want to help.


    thanks again

    any reason why this is crashin wow?
  2. #2
    flo8464's Avatar Active Member
    Reputation
    30
    Join Date
    Apr 2009
    Posts
    434
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Why are you retrieving the objectmgr ?

    This is all you have to do

    0040100E |. 6A 00 PUSH 0
    00401010 |. 68 08214000 PUSH OFFSET dummy.??_C@_08OCNLHKCN@lString1?$AA@ ; ASCII "lString1"
    00401015 |. 68 08214000 PUSH OFFSET dummy.??_C@_08OCNLHKCN@lString1?$AA@ ; ASCII "lString1"
    0040101A |. B8 B0AA4900 MOV EAX,49AAB0
    0040101F |. FFD0 CALL EAX
    Just push the offset of your string instead

  3. #3
    lanman92's Avatar Active Member
    Reputation
    50
    Join Date
    Mar 2007
    Posts
    1,033
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Updating the TLS makes it less likely to crash(it still will).

    As for the fix, why in the hell are you casting it as an Object()? Cast the address to call as a uint.

    Here:
    Code:
    ...("mov eax, {0}", (uint)(dwAlloc + 0x512));
    ...("push 0");
    ...("push eax");
    ...("push eax");
    ...("call {0}", (uint)(0x49AAB0));
    The ultimate way to do this is to inject a stub to write to the beginning of endscene and hook it. Have the detour check a bool to see if you have a string to do(pun intended). Run dostring on that string if so, and write 0 to the bool then continue with the actual endscene.

    Here's my endscene hook that I use:

    Code:
    HRESULT __stdcall mEndScene(LPDIRECT3DDEVICE9 pDevice)
    {
        __asm {
            pushad;
            pushfd;
        }
        
        while(!stringstodo.empty())
        {
            std::string * s = stringstodo.back();
            stringstodo.pop_back();
            DoString(const_cast<char*>(s->c_str()), const_cast<char*>(s->c_str()), 0);
            delete s;
        }
    
        __asm {
            popfd;
            popad;
        }
        return oEndScene(pDevice);
    }
    Obviously it's in C++, but you get the idea. Stringstodo is a global vector that I push_back() a string onto through a P/Invoke.
    Last edited by lanman92; 07-08-2009 at 05:26 PM.

  4. #4
    jockel's Avatar Member
    Reputation
    4
    Join Date
    Mar 2009
    Posts
    54
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Doing C++ DoString through P/Invoke sounds awesome.
    Any hints on that, how you are doing this?

    I know how to use P/Invoke, but I can't think of a method how you can use a injected library via P/Invoke.
    Last edited by jockel; 07-08-2009 at 05:54 PM.

  5. #5
    Nokia5800's Avatar Member
    Reputation
    -4
    Join Date
    Jun 2009
    Posts
    16
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    thanks for the responses guys, im tryin to get it to work now..

    also anyone have a good asm to opcode converter on hand?

  6. #6
    lanman92's Avatar Active Member
    Reputation
    50
    Join Date
    Mar 2007
    Posts
    1,033
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Through an injected DLL. Im in-process.

  7. #7
    Nokia5800's Avatar Member
    Reputation
    -4
    Join Date
    Jun 2009
    Posts
    16
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    anyone have an updated C# Lua_Dostring function that uses blackmagic?

  8. #8
    Apoc's Avatar Angry Penguin
    Reputation
    1388
    Join Date
    Jan 2008
    Posts
    2,750
    Thanks G/R
    0/13
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Nokia5800 View Post
    anyone have an updated C# Lua_Dostring function that uses blackmagic?
    Yes, your 2 new infraction points do.

  9. #9
    jockel's Avatar Member
    Reputation
    4
    Join Date
    Mar 2009
    Posts
    54
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by lanman92 View Post
    Through an injected DLL. Im in-process.
    Yeah of course... I said that before.

    But how do you call the C++ Dll from C# since it is in process and not in the file system.

    Are you using shared memory?

  10. #10
    lanman92's Avatar Active Member
    Reputation
    50
    Join Date
    Mar 2007
    Posts
    1,033
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    No, I'm loading a separate DLL file into WoW's memory in my C# code through P/Invoke and I call functions to hook or call wow's functions.

  11. #11
    kemkoi's Avatar Active Member
    Reputation
    15
    Join Date
    Oct 2008
    Posts
    70
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    no idea sry :S

  12. #12
    tanis2000's Avatar Active Member
    Reputation
    39
    Join Date
    Feb 2009
    Posts
    123
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by jockel View Post
    But how do you call the C++ Dll from C# since it is in process and not in the file system.
    Named pipes or sockets seem to be the best way for that kind of IPC. Keep in mind that you might want to run more than one instance of the client.

  13. #13
    jockel's Avatar Member
    Reputation
    4
    Join Date
    Mar 2009
    Posts
    54
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I know but sockets or pipes are really slow compared to P/Invoke calls.

    So I can't think of another method than shared memory access, using P/Invoke to call function from my C++ Dll in the wow process.

  14. #14
    lanman92's Avatar Active Member
    Reputation
    50
    Join Date
    Mar 2007
    Posts
    1,033
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    That would be a very interesting project. A .NET library that wraps shared memory and the likes... There's probably already one out there, just gotta look around.

  15. #15
    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)
    im using pipes atm but calling functions with pInvoke seems interesting.
    Is there any special requirements to do that?

Page 1 of 2 12 LastLast

Similar Threads

  1. Any idea why this piece of code doesnt work
    By jadethread1 in forum WoW Bots Questions & Requests
    Replies: 1
    Last Post: 03-20-2013, 01:05 AM
  2. Is there any way around this?
    By Iceman2 in forum Community Chat
    Replies: 5
    Last Post: 04-25-2007, 06:01 AM
  3. Give me 10 GOOD reasons why i should continue wow
    By DaNuMan in forum Community Chat
    Replies: 7
    Last Post: 04-12-2007, 02:35 AM
  4. Replies: 0
    Last Post: 03-17-2007, 02:58 PM
  5. Any one got this guide he says he can lvl to 60 in 5 game time days
    By bait in forum World of Warcraft General
    Replies: 6
    Last Post: 10-13-2006, 03:27 PM
All times are GMT -5. The time now is 01:02 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search