Click To Move in OllyDebug menu

User Tag List

Results 1 to 14 of 14
  1. #1
    kingdeking's Avatar Member
    Reputation
    4
    Join Date
    Oct 2008
    Posts
    50
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Click To Move in OllyDebug

    Helllo guys,

    I am having some trouble finding the function ClickToMove in Olly Debug. Even though offsets are provided in the dump thread I dont seem to find it. I am using WoW 4.06a. The dump thread says the ClickToMove offset is:
    5C8590 CGPlayer_C::ClickToMove
    http://www.ownedcore.com/forums/worl...mp-thread.html ([WoW][4.0.6.13623] Info Dump Thread)


    This offset is rebased. So I should just add the base address of WoW.exe and add that offset to ClickToMove. Now look when I fire up OllyDebug I see the following Base Address:

    Click To Move in OllyDebug-olly1-jpg


    So thats the math I do to get the right offset:

    0x00140000 + 0x005C8590 = 0x00708590
    ^
    Base Address of WoW.exe

    But look where I end up:

    Click To Move in OllyDebug-olly2-jpg



    Now. when I put a breakpoint there its not called when I do clickToMove in WoW. What am I doing wrong? Is the Base Address wrong or the offset?

    Click To Move in OllyDebug
  2. #2
    QKdefus's Avatar Active Member
    Reputation
    54
    Join Date
    May 2010
    Posts
    96
    Thanks G/R
    3/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0x5C8590 CGPlayer_C__ClickToMove = Function dump (offsets NOT rebased)

    0x5c8590 - 400000 = 0x1c8590 rebased

    0x1c8590 + 140000 = 0x308591 olly
    Last edited by QKdefus; 03-30-2012 at 02:50 PM.

  3. #3
    kingdeking's Avatar Member
    Reputation
    4
    Join Date
    Oct 2008
    Posts
    50
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by QKdefus View Post
    0x5C8590 CGPlayer_C__ClickToMove = Function dump (offsets NOT rebased)

    0x5c8590 - 400000 = 0x1c8590 rebased

    0x1c8590 + 140000 = 0x308591 olly

    Ow yeah, thanks a lot. Didnt know the imagebase was still in there ;]

  4. #4
    romb0t's Avatar Member
    Reputation
    79
    Join Date
    Dec 2011
    Posts
    212
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    @QKdefus
    You beat me

    It is why you have "NOT REBASED" in the TOM_RUSS posting

  5. #5
    QKdefus's Avatar Active Member
    Reputation
    54
    Join Date
    May 2010
    Posts
    96
    Thanks G/R
    3/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    not really used with olly, had to test it manually with 433 lol.

    good luck

  6. #6
    kingdeking's Avatar Member
    Reputation
    4
    Join Date
    Oct 2008
    Posts
    50
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hello,

    I need to dig that up. Can someone help me with the WoWPos structure that ClickToMove takes? I cant find it out......

  7. #7
    Bananenbrot's Avatar Contributor
    Reputation
    153
    Join Date
    Nov 2009
    Posts
    384
    Thanks G/R
    1/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Code:
    struct WoWPos
    {
        float X, Y, Z;
    };
    Basically a normal 3D vector. Some people also suggest a fourth float for facing, but I cannot reproduce why and until now it was enough to pass 12 bytes...

  8. #8
    kingdeking's Avatar Member
    Reputation
    4
    Join Date
    Oct 2008
    Posts
    50
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks,

    I managed to get that far now:

    typedef bool (__thiscall* ClickToMove_t)(__int32* ClassPointer, __int32 ClickToMoveType, __int64* pGUID, sWoWPos* pPos, float Precision);

    This is the last piece of the puzzle:
    _int32* ClassPointer

    I dont understand how to obtain this pointer. One way might be to hook ClickToMove and use it once in game and obtain the pointer but thats plain ugly. Anyone got some info on this?


    edit: I hooked the function and Im getting the pointer like this but its so ugly. And I have looked up GetActivePlayer but it does not return the pointer. So idk how to do this better.
    Last edited by kingdeking; 08-06-2012 at 12:31 PM.

  9. #9
    Bananenbrot's Avatar Contributor
    Reputation
    153
    Join Date
    Nov 2009
    Posts
    384
    Thanks G/R
    1/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Actually, you are supposed to call ClickToMove with the active player's address... at least it works for me.

  10. #10
    kingdeking's Avatar Member
    Reputation
    4
    Join Date
    Oct 2008
    Posts
    50
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    hmm, so weird when I call GetActivePlayer within my DLL the function returns something different than when WoW calls it. I think it has something to do with Threads because the first line of GetActivePlayer accesses FS-Segment. Thats really stupid... WoW is really a bitch to me today. Anyone can help?

    And here is the asm of GetActivePlayer:

    Code:
    MOV ECX, DWORD PTR FS:[2C]
    MOV EAX,DWORD PTR DS:[1B4C170]
    MOV EDX,DWORD PTR DS:[ECX+EAX*4]
    MOV ECX,DWORD PTR DS:[EDX+8]
    TEST ECX,ECX
    JNZ SHORT Wow.011A523E
    XOR EAX,EAX
    XOR EDX,EDX
    RETN
    MOV EAX,DWORD PTR DS:[ECX+B8]
    MOV EDX,DWORD PTR DS:[ECX+BC]
    RETN
    I also tried copying the function and just calling my own implementation, but same result.
    Last edited by kingdeking; 08-06-2012 at 05:07 PM.

  11. #11
    migtron's Avatar Corporal
    Reputation
    18
    Join Date
    Jun 2010
    Posts
    22
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    WoW uses ThreadLocal storage for several things, including the object manager. So either you dive deep into structures which are not part of any official API or you reverse engineer functions like GetActivePlayer to get the necessary offsets. GetActivePlayer returns a GUID by the way, so you still need to get the actual object after finding the GUID.

  12. #12
    kingdeking's Avatar Member
    Reputation
    4
    Join Date
    Oct 2008
    Posts
    50
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    What do you mean by reverse engineer functions like GetActivePlayer. There is nothing to reverse here, the function is naked. All i can try is maybe see where it is called from and see how the reutnr value of GetActivePlayer is handled, since you say GetActivePlayer returns a GUID, the actual object might be obtained in the caller function..

    edit: o snap, now i understand, clicktomove takes the player object, and i can find it by iterating over the objects, right? I got it now ... long day.

  13. #13
    migtron's Avatar Corporal
    Reputation
    18
    Join Date
    Jun 2010
    Posts
    22
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I mean that you see what is happening with the object from thread local storage after WoW gets it. In this case, you see that a specific value (the player GUID) is gotten from a certain offset. The thread local value this offset is relative to is the object manager, which you probably already found other ways to get access to. Or can easily find in the respective threads in this forum.

  14. #14
    kingdeking's Avatar Member
    Reputation
    4
    Join Date
    Oct 2008
    Posts
    50
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Okay thanks a lot, I am obtaining the player guid using the offsets provided in this forum since messing with TLS and whatever not is above my level.... I am iterating over the objects now receiving the pointer to the player object successfully and being able to call ClickToMove successfully aswell. Thanks for all the help! I can proceed writing my own personal bot now.

Similar Threads

  1. [Hack] Guardians CTM Teleporter (Click to move)
    By The-Guardian in forum WoW EMU Programs
    Replies: 95
    Last Post: 06-09-2020, 02:50 PM
  2. Click to Move - Explained
    By Apoc in forum WoW Memory Editing
    Replies: 33
    Last Post: 01-19-2010, 07:28 AM
  3. [3.2] Click To Move
    By Kamuuk in forum WoW Memory Editing
    Replies: 25
    Last Post: 08-22-2009, 10:59 AM
  4. Click to move?
    By ashleyww in forum WoW Memory Editing
    Replies: 32
    Last Post: 07-18-2009, 08:48 PM
  5. Click to Move Problem
    By Rival-Fr in forum WoW Memory Editing
    Replies: 5
    Last Post: 07-03-2009, 09:27 AM
All times are GMT -5. The time now is 02:57 AM. 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