Reading object and character names menu

User Tag List

Page 1 of 2 12 LastLast
Results 1 to 15 of 27
  1. #1
    Hrap's Avatar Member
    Reputation
    12
    Join Date
    Oct 2018
    Posts
    111
    Thanks G/R
    12/4
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    Reading object and character names

    Greetings , finally I figured out the object manager in WOTLKC , Many thanks to Razzue for the help, I learned a lot of useful things from his posts and topics

    But I'm stuck with reading the Game Object and Local Player names


    For GameObject, I first read int Name1 = 0x148

    Code:
    DWORD_PTR nameptr = RemouteMemory->Read<DWORD_PTR>(entry+0x148);
    I then read the line from Name2 = 0xE0;

    Code:
    char name[128];
    name = RemoteMemory->ReadCStr>(nameptr+0xE0 );
    Or
    Code:
    string name = RemoteMemory->ReadCStr>(nameptr+0xE0);
    the result is always the same,
    i get the same character set for all objects

    Maybe I'm wrong somewhere
    how to do it right?

    and can you show how you read the name of a local player from the name base, I could not find an example here on the forum how others do it?
    Last edited by Hrap; 10-10-2022 at 08:28 AM.

    Reading object and character names
  2. #2
    Razzue's Avatar Contributor Avid Ailurophile

    CoreCoins Purchaser Authenticator enabled
    Reputation
    379
    Join Date
    Jun 2017
    Posts
    588
    Thanks G/R
    185/268
    Trade Feedback
    2 (100%)
    Mentioned
    14 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Hrap View Post
    Greetings , finally I figured out the object manager in WOTLKC , Many thanks to Razzue for the help, I learned a lot of useful things from his posts and topics

    But I'm stuck with reading the Game Object and Local Player names




    For GameObject, I first read int Name1 = 0x148

    DWORD_PTR nameptr = RemouteMemory->Read<DWORD_PTR>(entry+0x14;

    I then read the line from Name2 = 0xE0;

    charname[128];
    name = RemoteMemory->ReadCStr>(nameptr+0xE0 );

    but i get the same character set for all objects

    Maybe I'm wrong somewhere
    how to do it right?

    and can you show how you read the name of a local player from the name base, I could not find an example here on the forum how others do it?
    Code:
    var ptr = Memory.Read<IntPtr>(BaseAddress, new[] { 0x148, 0xE0 }); // [[Object address + 0x148] + 0xE0]
    var _Name = IntPtr.Zero != ptr ? Memory.ReadString(ptr) : string.Empty;
    My "Read string" call (it's gross i know, don't judge)
    Code:
    public static string ReadString(IntPtr address, Encoding encoding = null, int size = 255){
        fixed (byte* bytes = new byte[size])
        {
            var status = mem.rvm(_ProcessHandle, address, (IntPtr)bytes, (IntPtr)size, default);
            if (!mem.NtSuccess(status)) return string.Empty;
    
    
            var name = encoding?.EncodingName ?? string.Empty;
            if (name.Contains("ASCII"))
                return CutString(Encoding.ASCII.GetString(bytes, size));
    
    
            if (name.Contains("(UTF-8)"))
                return CutString(Encoding.UTF8.GetString(bytes, size));
    
    
            if (name.Contains("(UTF-7)"))
                return CutString(Encoding.UTF7.GetString(bytes, size));
    
    
            return Marshal.PtrToStringAnsi((IntPtr)bytes);
        }
    }
    For local player name i believe i shared the offsets in my posts?
    Memory.ReadString(GameAddress + 0x2F72CE8);
    "May all your bacon burn"

  3. #3
    Hrap's Avatar Member
    Reputation
    12
    Join Date
    Oct 2018
    Posts
    111
    Thanks G/R
    12/4
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Thank you so much, I understand everything, read the address from the object base + the first offset, then read the address from the result + the second offset, and then read the name string

    I thought with the name of the player it would be much more difficult))
    For example, in 3.3.5 there was a strange complex function that I couldn’t understand, I just copied it somewhere from the source))

    Once again, many thanks for your help.
    Last edited by Hrap; 10-10-2022 at 09:25 AM.

  4. #4
    Razzue's Avatar Contributor Avid Ailurophile

    CoreCoins Purchaser Authenticator enabled
    Reputation
    379
    Join Date
    Jun 2017
    Posts
    588
    Thanks G/R
    185/268
    Trade Feedback
    2 (100%)
    Mentioned
    14 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Hrap View Post
    Thank you so much, I understand everything, read the address from the object base + the first offset, then read the address from the result + the second offset, and then read the name string

    I thought with the name of the player it would be much more difficult))
    For example, in 3.3.5 there was a strange complex function that I couldn’t understand, I just copied it somewhere from the source))

    Once again, many thanks for your help.
    Correct. You can find the players realm name around the same area as player name iirc.

    Other player names you'll need to read the player name cache, then fetch player name by their guid (likely a better function if internal) from that cache, you can get the local player name that way as well.
    "May all your bacon burn"

  5. #5
    Hrap's Avatar Member
    Reputation
    12
    Join Date
    Oct 2018
    Posts
    111
    Thanks G/R
    12/4
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Thanks, I will try

    Another question, where can I read whether the player is on the mount or not?
    I think it's worth reading some byte
    either from mowement?
    Last edited by Hrap; 10-10-2022 at 09:55 AM.

  6. #6
    Razzue's Avatar Contributor Avid Ailurophile

    CoreCoins Purchaser Authenticator enabled
    Reputation
    379
    Join Date
    Jun 2017
    Posts
    588
    Thanks G/R
    185/268
    Trade Feedback
    2 (100%)
    Mentioned
    14 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Hrap View Post
    Thanks, I will try

    Another question, where can I read whether the player is on the mount or not?
    Look for the post where I shared the fields
    <Int>(Player base+Fields.Unit.MountID) != 0

    Though that doesn't account for shapeshift (druid) forms.

    I believe you can also look for transport guid? (Not sure if that's for mounts as well)
    "May all your bacon burn"

  7. #7
    Hrap's Avatar Member
    Reputation
    12
    Join Date
    Oct 2018
    Posts
    111
    Thanks G/R
    12/4
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Thank you very much, you are super!!!

    perhaps reading your posts did not pay attention to this offset, as I was looking for another

    I will try to be more careful

  8. #8
    Hrap's Avatar Member
    Reputation
    12
    Join Date
    Oct 2018
    Posts
    111
    Thanks G/R
    12/4
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    It turned out so to read the names of the GameObject

    Code:
    DWORD_PTR namePtr = RemouteMemory->Read<DWORD_PTR>(entry + 0x148);
    DWORD_PTR namePtr2 = RemouteMemory->Read<DWORD_PTR>(namePtr + 0xE0);
    if (namePtr2 != 0){
    std::cout << encode((char*)RemouteMemory->ReadBytes(namePtr2, 32),32)<<std::endl;
    }
    However, for some objects namePtr2 address is null
    is that how it should be?
    Аnd when you try to read, an access error is naturally issued
    So I added an exception to not read null addresses

    But is it ok?
    Last edited by Hrap; 10-10-2022 at 01:15 PM.

  9. #9
    scimmy's Avatar Active Member
    Reputation
    52
    Join Date
    Jul 2020
    Posts
    54
    Thanks G/R
    1/33
    Trade Feedback
    0 (0%)
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Razzue View Post
    Correct. You can find the players realm name around the same area as player name iirc.

    Other player names you'll need to read the player name cache, then fetch player name by their guid (likely a better function if internal) from that cache, you can get the local player name that way as well.
    just call a vtable function on any object and it returns the string directly.

  10. #10
    Hrap's Avatar Member
    Reputation
    12
    Join Date
    Oct 2018
    Posts
    111
    Thanks G/R
    12/4
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    How to call her?

  11. #11
    ermite66's Avatar Member
    Reputation
    11
    Join Date
    May 2014
    Posts
    36
    Thanks G/R
    5/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hrap , how u iterate OM ?
    PS i think he doing its internal , inject dll ...

  12. #12
    Razzue's Avatar Contributor Avid Ailurophile

    CoreCoins Purchaser Authenticator enabled
    Reputation
    379
    Join Date
    Jun 2017
    Posts
    588
    Thanks G/R
    185/268
    Trade Feedback
    2 (100%)
    Mentioned
    14 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by scimmy View Post
    just call a vtable function on any object and it returns the string directly.
    That would require me to be internal no? Everything I do is done externally ATM 🤔
    "May all your bacon burn"

  13. #13
    Hrap's Avatar Member
    Reputation
    12
    Join Date
    Oct 2018
    Posts
    111
    Thanks G/R
    12/4
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by ermite66 View Post
    Hrap , how u iterate OM ?
    PS i think he doing its internal , inject dll ...
    I'm reading memory from an external application, I'm not injecting anything

    The order is as follows:
    get privileges for my application;
    looking for a game process by its name;
    Then read whatever you need;
    Last edited by Hrap; 10-12-2022 at 04:26 AM.

  14. #14
    Givi88's Avatar Member
    Reputation
    1
    Join Date
    Nov 2020
    Posts
    2
    Thanks G/R
    5/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I also share how to get unit name. Tried to find this for the past two days
    [[GameObject + 0x380] + 0xF8] => Unit Name

  15. #15
    Razzue's Avatar Contributor Avid Ailurophile

    CoreCoins Purchaser Authenticator enabled
    Reputation
    379
    Join Date
    Jun 2017
    Posts
    588
    Thanks G/R
    185/268
    Trade Feedback
    2 (100%)
    Mentioned
    14 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Givi88 View Post
    I also share how to get unit name. Tried to find this for the past two days
    [[GameObject + 0x380] + 0xF8] => Unit Name
    Almost like you could have just read my field offsets from here..... https://www.ownedcore.com/forums/wor...d-45327-a.html (Classic Wrath => Build 45327) Post #7
    "May all your bacon burn"

Page 1 of 2 12 LastLast

Similar Threads

  1. Replies: 0
    Last Post: 09-08-2016, 07:16 AM
  2. Ticket a gm to reset inactive character name, snag and sell.
    By Paperboi in forum World of Warcraft Exploits
    Replies: 3
    Last Post: 09-26-2012, 08:42 AM
  3. [How to]Get the character name (And save it) you want! (Possibly)
    By Chexer in forum World of Warcraft Guides
    Replies: 9
    Last Post: 10-20-2009, 05:06 PM
  4. [Mac][3.2] Finding the object list & reading object names
    By flukes1 in forum WoW Memory Editing
    Replies: 12
    Last Post: 09-22-2009, 09:47 PM
  5. [?] Reading Object Name
    By Smarter in forum WoW Memory Editing
    Replies: 4
    Last Post: 04-03-2009, 08:03 PM
All times are GMT -5. The time now is 05:11 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