Name from Guid (for RawrSnarl) menu

User Tag List

Results 1 to 6 of 6
  1. #1
    Sillyboy72's Avatar Member
    Reputation
    13
    Join Date
    Jan 2009
    Posts
    66
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Name from Guid (for RawrSnarl)

    Hey RawrSnarl, got your PM, but I only have like 7 posts or something, so I can't reply. weeeeee....

    Comparing your VB code to mine... it looks crazy similiar. I saw nothing "wrong" with it. Mine only works for players (not other units). Maybe you aren't passing a valid guid?

    You are welcome to compare yourself... (I stuck w/ C++)

    Code:
    void NameFromGuid(LONGLONG guid, int numBytes, char *name)
    {                                                
    	static const unsigned long nameStorePtr        = 0x011AE3D0 + 0x8;  // Player name database
    	static const unsigned long nameMaskOffset      = 0x024;  // Offset for the mask used with GUID to select a linked list
    	static const unsigned long nameBaseOffset      = 0x01c;  // Offset for the start of the name linked list
    	static const unsigned long nameStringOffset    = 0x020;  // Offset to the C string in a name structure
    
    	unsigned long mask, base, offset, current, shortGUID, testGUID;
    	
    	mask = ReadDword(nameStorePtr + nameMaskOffset);
    	base = ReadDword(nameStorePtr + nameBaseOffset);
    
    	shortGUID = guid & 0xffffffff;  // Only half the guid is used to check for a hit
    	offset = 12 * (mask & shortGUID);  // select the appropriate linked list
    	
    	current = ReadDword(base + offset + 8);
    	offset = ReadDword(base + offset);  // next-4 ?
    
    	if (current == 0 || (current & 0x1)) {*name = 0; return;}
    
    	testGUID = ReadDword(current);
    	
    	while (testGUID != shortGUID)
    	{
    		current = ReadDword(current + offset + 4);
    		
    		if (current == 0 || (current & 0x1)) {*name = 0; return;}
    		testGUID = ReadDword(current);		
    	}
    
    	// Found the guid in the name list...
    	ReadBytesIntoBuffer(current + nameStringOffset, numBytes, name);	
    }

    Name from Guid (for RawrSnarl)
  2. #2
    RawrSnarl's Avatar Member
    Reputation
    14
    Join Date
    May 2008
    Posts
    65
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks for the response. It was a small typo that was giving me such a rough time.

  3. #3
    Gamer's Avatar Active Member
    Reputation
    239
    Join Date
    Jan 2007
    Posts
    198
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I'm using the GetObjectName function with injection, but +Rep x 2 for this, very helpful

  4. #4
    RawrSnarl's Avatar Member
    Reputation
    14
    Join Date
    May 2008
    Posts
    65
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    For those who want the VB.NET version...

    Code:
        Public Function GetPlayerName(ByVal playerGUID As Int64)
            Dim nameStorePtr = &H11AE3D0 + &H8
            Dim nameMaskOffset = &H24
            Dim nameBaseOffset = &H1C
            Dim nameStringOffset = &H20
    
            Dim GUID = playerGUID
    
            Dim mask = Memory.ReadUInt(processHandle, nameStorePtr + nameMaskOffset)
            Dim base = Memory.ReadUInt(processHandle, nameStorePtr + nameBaseOffset)
    
            Dim shortGUID = (GUID And &HFFFFFFFF)
            If mask = &HFFFFFFFF Then
                Return ""
            End If
    
            Dim offset = 12 * (mask And shortGUID)
            Dim current = Memory.ReadUInt(processHandle, base + offset + 8)
            offset = Memory.ReadUInt(processHandle, base + offset)
            If current = 0 Or (current And &H1) Then
                Return ""
            End If
    
            Dim testGUID = Memory.ReadInt(processHandle, current)
            While testGUID <> shortGUID
                current = Memory.ReadUInt(processHandle, current + offset + 4)
                If current = 0 Or (current And &H1) Then
                    Return ""
                End If
                testGUID = Memory.ReadInt(processHandle, current)
            End While
    
            Return ReadString(current + nameStringOffset, 12)
        End Function

  5. #5
    r00tman's Avatar Contributor
    Reputation
    174
    Join Date
    Dec 2006
    Posts
    253
    Thanks G/R
    3/1
    Trade Feedback
    7 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Very interesting +rep * 3

  6. #6
    WhatSupMang's Avatar Member
    Reputation
    6
    Join Date
    Jan 2009
    Posts
    5
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I'm sorry for reviving an older thread on my first post, but I've been looking for an up-to-date address for the name storage for a while. Thank you very much SillyBoy72

    Oh, sorry... Where are my manners? Here is a copy of the original function posted, but in C#
    Code:
    public unsafe string NameFromGuid(ulong guid)
            {
    	        const ulong nameStorePtr        = 0x011AE3D0 + 0x8;  // Player name database
    	        const ulong nameMaskOffset      = 0x024;  // Offset for the mask used with GUID to select a linked list
    	        const ulong nameBaseOffset      = 0x01c;  // Offset for the start of the name linked list
    	        const ulong nameStringOffset    = 0x020;  // Offset to the C string in a name structure
    
    	        ulong mask, base_, offset, current, shortGUID, testGUID;
    
                mask = Kernel32.ReadUInt32(WowProcessHandle, (IntPtr)(nameStorePtr + nameMaskOffset), true);
                base_ = Kernel32.ReadUInt32(WowProcessHandle, (IntPtr)(nameStorePtr + nameBaseOffset), true);
    
    	        shortGUID = guid & 0xffffffff;  // Only half the guid is used to check for a hit
    	        offset = 12 * (mask & shortGUID);  // select the appropriate linked list
    
                current = Kernel32.ReadUInt32(WowProcessHandle, (IntPtr)(base_ + offset + 8), true);
                offset = Kernel32.ReadUInt32(WowProcessHandle, (IntPtr)(base_ + offset), true);  // next-4 ?
                //current == 0 || (current & 0x1)
    	        if ((current & 0x1) == 0x1) { return "";}
    
                testGUID = Kernel32.ReadUInt32(WowProcessHandle, (IntPtr)(current), true);
            	
    	        while (testGUID != shortGUID)
    	        {
                    current = Kernel32.ReadUInt32(WowProcessHandle, (IntPtr)(current + offset + 4), true);
    
                    if ((current & 0x1) == 0x1) { return ""; }
                    testGUID = Kernel32.ReadUInt32(WowProcessHandle, (IntPtr)(current), true);		
    	        }
    
    	        // Found the guid in the name list...
    	        //ReadBytesIntoBuffer(current + nameStringOffset, numBytes, name);
                return Kernel32.ReadString(WowProcessHandle, (IntPtr)(current + nameStringOffset), true);
            }
    Last edited by WhatSupMang; 01-12-2009 at 07:48 PM.

Similar Threads

  1. Player Name from Guid
    By jmac321 in forum WoW Memory Editing
    Replies: 2
    Last Post: 08-27-2012, 05:18 PM
  2. [Guide] Great guide for easy earned xp from candybuckets!! using simpleflyv4! *MUST READ*!
    By Stippy'six in forum World of Warcraft Guides
    Replies: 17
    Last Post: 10-22-2010, 10:07 AM
  3. [Request] Guide For 2 Realms, From 2 Repack's
    By september in forum WoW EMU Questions & Requests
    Replies: 8
    Last Post: 01-30-2009, 09:39 AM
  4. [Guide for admins!] How to get level 255 name trix!
    By INS4N3K1LL in forum WoW EMU Guides & Tutorials
    Replies: 10
    Last Post: 03-16-2008, 01:18 PM
All times are GMT -5. The time now is 02:57 PM. 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