[2.4.3/General WoW] Help with Objectmanager menu

Shout-Out

User Tag List

Results 1 to 12 of 12
  1. #1
    gubluk's Avatar Private
    Reputation
    1
    Join Date
    Nov 2013
    Posts
    5
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    [2.4.3/General WoW] Help with Objectmanager

    Hello folks,

    I've been a silent reader for a long time now, and recently I started programming a bot for myself just to learn something.
    I only code it because I find that topic really interesting and I don't expect it to ever be perfect.

    For now, I managed to implement stuff like a profile-generator/editor, custom settings, implemented GoTo's and GhostPaths and so on.

    The only thing I simply seem unable to manage is to actually find mobs - I read through tons of information and noticed that I need the object manager for this.
    While I am playing, or more like messing around, on an old private server (2.4.3), nearly all information about the object manager seem to be "too fresh".

    Kynox and other great guys helped me with their dumps, making me able to find my own pointers for the ctm stuff - but I seem to dumb to handle the advanced stuff.
    From my point of view, to address the object manager, I need to read through the g_clientConnection and add the currMgr offset - then I should reach its base.
    My main problem is, there is no currMgr offset - I found stuff like createObjectManager but I don't know how to handle it.
    I don't ask you to paste me some code, but it would be great to get pushed into the right direction.
    The threads I used were 2.4.3 Offsets & Pointers and Release - 2.4.3 Addresses.

    Any help or information is appreciated. I read through a few info threads but they mostly referred to offsets that I didn't find on my own or anywhere else.
    And, by the way, I am doing this stuff in vb.net.

    Regards

    [2.4.3/General WoW] Help with Objectmanager
  2. #2
    Valediction's Avatar Active Member
    Reputation
    37
    Join Date
    Jul 2012
    Posts
    48
    Thanks G/R
    8/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    You can check

    http://www.ownedcore.com/forums/worl...-1-12-1-a.html (Open Souce Project for WoW 1.12.1)

    It's for 1.12, which should solve the "too fresh" problem. There you should be able to follow the objmgr process with ease.

  3. #3
    gubluk's Avatar Private
    Reputation
    1
    Join Date
    Nov 2013
    Posts
    5
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks allready for your link, this seems to be great. I am reading through the source right now.
    Still, I stumbled over his/her access on the objectmanager:

    Code:
    ClientConnection = WowReader.ReadUInt((StaticClientConnection));
                FirstObject = WowReader.ReadUInt((ClientConnection + FirstObjectOffset));
    While kynox's dump for 2.4.3 features addresses like
    Code:
    // Objects
    #define createObjectManager 0x0046E0D0
    #define ClntObjMgrGetActivePlr 0x00402F40
    #define ClntObjMgrGetActivePlrGuid 0x00469DD0
    #define ClntObjMgrObjectPtr 0x0046B610
    #define ClntObjMgrEnumObjects 0x0046B3F0
    I don't see any offsets for the first/next object in it. Do I miss something essential? Is my knowledge for now simply not enough to get it?
    Or is there any documentation on how to handle kynox's offset dumper? I found many links to mmowned, but yeah, as you can guess none of them works

  4. #4
    Valediction's Avatar Active Member
    Reputation
    37
    Join Date
    Jul 2012
    Posts
    48
    Thanks G/R
    8/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I don't remember exactly how it's done in 2.4.3 ATM but I suggest you play with memory BPs in the static address and see what offset, if any, they're using. One way or the other you'll have to debug WoW/read some code if you plan to develop anything by yourself, dump threads are a help but won't typically be enough.

  5. #5
    =manzarek='s Avatar Member
    Reputation
    3
    Join Date
    Feb 2010
    Posts
    39
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    PHP Code:
     uint currentManager_Pre Wow.ReadUInt((uint)Offsets.General.ClientConnection);
                
    uint currentManager Wow.ReadUInt(currentManager_Pre + (uint)Offsets.ObjectManager.ObjectManagerOffset);
                
    //or
                //uint currentManager = wow.ReadUInt((uint)wowBase + (uint)Offsets.ObjectManager.s_curMgr);
                 
    uint nextObject Wow.ReadUInt(currentManager + (uint)Offsets.ObjectManager.FirstObject);
                while ((
    nextObject != 0) && ((nextObject 1) == 0))
                {
                    
    WowObject wo = new WowObject();
                    
    //uint desc = Wow.ReadUInt(nextObject + (uint)Offsets.ObjectManager.Descriptors);
                    
    wo.GUIDWow.ReadUInt64(nextObject + (uint)Offsets.ObjectManager.GUID);
                    
    //wo.DisplayID = Wow.ReadUInt(desc + (uint)Offsets.Descriptor.displayID);
                    
    wo.Type Wow.ReadUInt(nextObject + (uint)Offsets.ObjectManager.Type);

    ...


     
    nextObject Wow.ReadUInt(nextObject + (uint)Offsets.ObjectManager.NextObject); 
    PHP Code:
            public enum ObjectManager
            
    {
                
    ObjectManagerOffset 0x2218,
                
    LocalGuid 0xC0,
                
    FirstObject 0xAC,
                
    NextObject 0x3C,
                
    GUID 0x30,
                
    Type 0x14,
                
    0xBF0,
                
    0x4,
                
    0x8,
                
    0xC,
                
    FieldOffset 0x120,
            }; 
    PHP Code:
            public enum WowObjectType
            
    {
                
    OBJECT 0,
                
    ITEM 1,
                
    CONTAINER 2,
                
    UNIT 3,
                
    PLAYER 4,
                
    GAMEOBJECT 5,
                
    DYNAMICOBJECT 6,
                
    CORPSE 7,
                
    AREATRIGGER 8,
                
    SCENEOBJECT 9,
                
    NUM_CLIENT_OBJECT_TYPES 0xA
            
    }; 
    PHP Code:
            public enum General
            
    {
                
    ClientConnection 0x00D43318,
                
    PlayerBase 0x00E29D28,
            }; 

  6. #6
    ZenLulz's Avatar Corporal CoreCoins Purchaser
    Reputation
    59
    Join Date
    Jan 2012
    Posts
    20
    Thanks G/R
    1/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Another hint: a good starting point is also to understand how WoW handle in-game objects. There is a nice thread that summarize that here: http://www.ownedcore.com/forums/worl...e-objects.html ([Guide-kind of] How I handle objects.).

    The given examples are maybe not designed for the version you are focusing, but the concept remains the same. With the info dump provided by =manzarek=, I'm sure you will be able to browse the object manager.

    Happy reversing.
    ZenLulz, Author of MemorySharp - A C# based memory editing library.

  7. #7
    danwins's Avatar Contributor
    Reputation
    189
    Join Date
    Mar 2013
    Posts
    143
    Thanks G/R
    6/62
    Trade Feedback
    1 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by gubluk View Post
    While kynox's dump for 2.4.3 features addresses like
    Code:
    // Objects
    #define createObjectManager 0x0046E0D0
    #define ClntObjMgrGetActivePlr 0x00402F40
    #define ClntObjMgrGetActivePlrGuid 0x00469DD0
    #define ClntObjMgrObjectPtr 0x0046B610
    #define ClntObjMgrEnumObjects 0x0046B3F0
    this is because these are functions related to the object manager, the first/next object offsets are usually reverse from these. (look through these functions in IDA)

  8. #8
    gubluk's Avatar Private
    Reputation
    1
    Join Date
    Nov 2013
    Posts
    5
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Wow guys, you simply are amazing.
    Thank you very much for the links and the dumps, and also for the additional information!
    I am very confident that I'll be able to work with this.
    Thanks!

    I'll post again if I managed it or failed

  9. #9
    gubluk's Avatar Private
    Reputation
    1
    Join Date
    Nov 2013
    Posts
    5
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hello again,
    I wanted to thank you again, I managed to loop through the OM and take out the values I needed - for testing purposes I created a tiny radar which works great - GUIDs, names, positions, ... aren't a problem at all.

    I have two more questions,
    first about the Unit_Field_Flags: As far as I understood it, they describe wether an object is hostile, friendly,... depending on the player - I read some stuff about the bitmasks but didn't really get it.

    Second, after I noticed that it is way more easy to update and change stuff if you outclass specific functions I rewrote my base. I somehow managed to screw up my movement functions, meaning I am still able to trigger the CTM-Action ( setting
    Code:
    CTM_StateAddress = 0xD689BC
    to 4), but my Values for the CTM X, Y and Z don't work anymore.
    I remember I had a hard time finding them, being completely unable to get a CTM Base Pointer and after hours of searching finding static addresses for them.
    Do I need to debug WoW for those or is there any hint where they hide?
    I allready searched in the region near my CTM_State and near my normal player position. I only found odd addresses that didn't bring me ahead.

    Regards

  10. #10
    =manzarek='s Avatar Member
    Reputation
    3
    Join Date
    Feb 2010
    Posts
    39
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    maybe post your code and offsets for CTM

  11. #11
    gubluk's Avatar Private
    Reputation
    1
    Join Date
    Nov 2013
    Posts
    5
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    My Offsets are the following:

    Code:
    Public Enum Movement
            CTM_StateAddress = &HD689BC
            CTM_ZAddress = &HD68A14 'Those 3 aren't the right ones :/
            CTM_YAddress = &HD68A1C
            CTM_XAddress = &HD68A20
        End Enum
    To trigger my CTM, I use the following:

    Code:
    WriteProcessMemory(readHandle, Offsets.Movement.CTM_XAddress, xCoordinate, 4, 0)
    WriteProcessMemory(readHandle, Offsets.Movement.CTM_YAddress, yCoordinate, 4, 0)
    WriteProcessMemory(readHandle, Offsets.Movement.CTM_ZAddress, zCoordinate, 4, 0)
    
    WriteProcessMemory(readHandle, Offsets.Movement.CTM_StateAddress, stateBuffer, 8, 0)
    My stateBuffer is the right one, If I CTM anywhere and cancel it, then trigger my function --> My Character will walk to my last CTM-Click.
    When I write those Values and then trigger it, my character will still walk towards the last CTM-Click --> The Addresses are wrong.

    TBH, I don't know how I managed to find the right addresses, I allready spent another few hours clicking and walking around and searching through CE.

    Regards

    And btw: I wanted to give you guys, especially you manzarek, Rep, but I seem to be unable to do so for the moment. Will give you some coins instead.

  12. #12
    =manzarek='s Avatar Member
    Reputation
    3
    Join Date
    Feb 2010
    Posts
    39
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    X = 0x00d68a18, //4bytes
    Y = 0x00d68a1C, //4bytes
    Z = 0x00d68a20, // 4bytes
    Push = 0x00d689bc, //4bytes (you wrote 8 )
    Guid = 0x00d689c0, //8 bytes
    There is also an other adresse at 0x00d689ae but i dont know what is it (i called it mystery^^), it is different for each action,
    for gathering its 0x4090
    for moving its 0x3F00
    For attacking it depend of the mob,.. maybe its the faction , i dont know if you have the answer tell me.
    I found them with cheat engine

    for the push

    public enum CTMActions
    {
    FaceTarget = 1,
    Stop = 3,
    Walk = 4,
    MoveAndInterractNPC = 5,
    Loot = 6,
    MoveAndInterractObject = 7,
    FaceOther = 8,
    Skin = 9,
    Attack = 10,
    WhenNothing = 13,
    };

    so this is just for moving
    PHP Code:
    public void Move(Point p)
            {
                
    Wow.WriteFloat((uint)Offsets.CTM.Xp.X);
                
    Wow.WriteFloat((uint)Offsets.CTM.Yp.Y);
                
    Wow.WriteFloat((uint)Offsets.CTM.Zp.Z);
                
    Wow.WriteInt64((uint)Offsets.CTM.Guid, (long)0); //you need this if you want to stop near an object
                
    Wow.WriteInt((uint)Offsets.CTM.Mystery, (int)Offsets.CTM.MysteryMove);
                
    Wow.WriteInt((uint)Offsets.CTM.Push, (int)Offsets.CTMActions.Walk);
            } 
    if you have the answer for the mystery offset tell me plz

Similar Threads

  1. Need help with buying/downloading WoW glider
    By sh1mm3 in forum World of Warcraft General
    Replies: 0
    Last Post: 11-17-2006, 08:00 PM
  2. need help with WoW Model View
    By Avianar47 in forum World of Warcraft General
    Replies: 1
    Last Post: 11-08-2006, 08:53 PM
  3. Need Help with WoW Glider
    By paypal in forum World of Warcraft General
    Replies: 2
    Last Post: 07-07-2006, 02:08 AM
All times are GMT -5. The time now is 11:01 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