-
Member
Originally Posted by
Razzue
Oh, i got it from a more fresher post https://www.ownedcore.com/forums/wor...ml#post4381690
And did not even notice that you shared the same offsets in OP post xd
-
Member
Originally Posted by
Givi88
I also share how to get unit name. Tried to find this for the past two days
[[GameObject + 0x380] + 0xF8] => Unit Name
I kind of laid out a working example of reading GameObject name...
Code:
char* GetNameObj(DWORD_PTR objEntry)
{
DWORD_PTR namePtr = RemouteMemory->Read<DWORD_PTR>(objEntry+ 0x148);
DWORD_PTR namePtr2 = RemouteMemory->Read<DWORD_PTR>(namePtr + 0xE0);
if (namePtr2 != 0){
return (char*)RemouteMemory->ReadBytes(namePtr2, 64);
}
return "Neme read error";
}
It is also important to understand that for different types of objects
names are reading differently
Last edited by Hrap; 10-13-2022 at 03:59 AM.
-
Post Thanks / Like - 1 Thanks
Heroku (1 members gave Thanks to Hrap for this useful post)
-
Member
Originally Posted by
Hrap
I kind of laid out a working example of reading GameObject name...
Code:
char* GetNameObj(DWORD_PTR objEntry)
{
DWORD_PTR namePtr = RemouteMemory->Read<DWORD_PTR>(objEntry+ 0x148);
DWORD_PTR namePtr2 = RemouteMemory->Read<DWORD_PTR>(namePtr + 0xE0);
if (namePtr2 != 0){
return (char*)RemouteMemory->ReadBytes(namePtr2, 64);
}
return "Neme read error";
}
It is also important to understand that for different types of objects
names are reading differently
you read objects array from [[WowClassic.exe + 0x3022EA0] + 0x8] ?
-
Post Thanks / Like - 1 Thanks
Heroku (1 members gave Thanks to ermite66 for this useful post)
-
Member
Yes
Code:
unsigned int count = RemouteMemory->Read<unsigned int>(RemouteMemory->Read<DWORD_PTR>(RemouteMemory->WowInfo.WowBaseAdrtess + 0x3022EA0)); // CurMgr
DWORD_PTR arrayaddr = RemouteMemory->Read<DWORD_PTR>(RemouteMemory->Read<DWORD_PTR>(RemouteMemory->WowInfo.WowBaseAdrtess + 0x3022EA0) + 0x8); //array adress
-
Post Thanks / Like - 2 Thanks
-
Member
Originally Posted by
Hrap
Yes
Code:
unsigned int count = RemouteMemory->Read<unsigned int>(RemouteMemory->Read<DWORD_PTR>(RemouteMemory->WowInfo.WowBaseAdrtess + 0x3022EA0)); // CurMgr
DWORD_PTR arrayaddr = RemouteMemory->Read<DWORD_PTR>(RemouteMemory->Read<DWORD_PTR>(RemouteMemory->WowInfo.WowBaseAdrtess + 0x3022EA0) + 0x8); //array adress
And what am I reading wrong? Names always empty ...
Code:
if (g_pGame->IsInGame())
{
DWORD_PTR ManagerBase = g_pProcess->Read<DWORD_PTR>(g_pProcess->GetBase() + Offsets::Object_Manager::Base);
int ObjCount = g_pProcess->Read<int>(ManagerBase);
DWORD_PTR PtrArrayAdr = g_pProcess->Read<DWORD_PTR>(ManagerBase + 0x8);
DWORD_PTR* ObjPtrArray = new DWORD_PTR[ObjCount];
g_pProcess->Read(PtrArrayAdr, ObjPtrArray, sizeof(DWORD64) * ObjCount);
for (int i = 0; i < ObjCount; i++)
{
DWORD_PTR ObjPtr = ObjPtrArray[i];
if (ObjPtr == 0)
continue;
DWORD_PTR namePtr = g_pProcess->Read<DWORD_PTR>(ObjPtr + 0x148);
DWORD_PTR namePtr2 = g_pProcess->Read<DWORD_PTR>(namePtr + 0xE0);
if (namePtr2 != 0)
{
char nam[64]{0};
g_pProcess->Read(namePtr2, &nam, 64);
printf("name = %s\n", nam);
}
}
delete[] ObjPtrArray;
-
Post Thanks / Like - 1 Thanks
Heroku (1 members gave Thanks to ermite66 for this useful post)
-
-
Member
Originally Posted by
Razzue
You're missing an entire step in your object manager loop.
Where's the entry address? Where's your while loop that looks for linked entries? There are MANY valid, working examples of the object manager with the first three pages of the memory editing forums.
Your example iterates only units.
See screen , only units, i read many posts in forum , they read (mgr_base + firs_obj) and next iterate while (first_obj + next_obj) != 0 like std::vector
Снимок.JPG
Code:
DWORD_PTR ManagerBase = g_pProcess->Read<DWORD_PTR>(g_pProcess->GetBase() + Offsets::Object_Manager::Base);
int Count = g_pProcess->Read<int>(ManagerBase);
DWORD_PTR PtrArrayAdr = g_pProcess->Read<DWORD_PTR>(ManagerBase + 0x8);
DWORD_PTR* ptrArr = new DWORD_PTR[Count];
g_pProcess->Read(PtrArrayAdr, ptrArr, sizeof(DWORD64) * Count);
for (int i = 0; i < Count; i++)
{
DWORD_PTR ptr = ptrArr[i];
if (ptr == 0)
continue;
do
{
auto entry = g_pProcess->Read<DWORD64>(ptr + 0x18);
if (entry == 0)
continue;
CGGuid guid = g_pProcess->Read<CGGuid>(entry + 0x18);
auto type = g_pProcess->Read<byte>(entry + 0x10);
auto Pos = g_pProcess->Read<Vector3>(entry + 0x148);
Vector2 vts;
bool ScreenPos = g_pGame->WorldToScreenv2(Pos, vts);
if (ScreenPos)
g_pDrawManager->GetDrawList()->AddCircle(vts, 15.f, ImColor(255, 0, 0, 255));
ptr = g_pProcess->Read<DWORD64>(ptr + 0x0);
} while (ptr != 0);
}
delete[] ptrArr;
}
Last edited by ermite66; 10-14-2022 at 03:09 PM.
-
Contributor
Avid Ailurophile
Originally Posted by
ermite66
Your example iterates only units.
See screen , only units, i read posts , hey read (mgr_base + firs_obj) and next iterate while (first_obj + next_obj) != 0 like std::vector
Снимок.JPG
Code:
DWORD_PTR ManagerBase = g_pProcess->Read<DWORD_PTR>(g_pProcess->GetBase() + Offsets::Object_Manager::Base);
int Count = g_pProcess->Read<int>(ManagerBase);
DWORD_PTR PtrArrayAdr = g_pProcess->Read<DWORD_PTR>(ManagerBase + 0x8);
DWORD_PTR* ptrArr = new DWORD_PTR[Count];
g_pProcess->Read(PtrArrayAdr, ptrArr, sizeof(DWORD64) * Count);
for (int i = 0; i < Count; i++)
{
DWORD_PTR ptr = ptrArr[i];
if (ptr == 0)
continue;
do
{
auto entry = g_pProcess->Read<DWORD64>(ptr + 0x18);
if (entry == 0)
continue;
CGGuid guid = g_pProcess->Read<CGGuid>(entry + 0x18);
auto type = g_pProcess->Read<byte>(entry + 0x10);
auto Pos = g_pProcess->Read<Vector3>(entry + 0x148);
Vector2 vts;
bool ScreenPos = g_pGame->WorldToScreenv2(Pos, vts);
if (ScreenPos)
g_pDrawManager->GetDrawList()->AddCircle(vts, 15.f, ImColor(255, 0, 0, 255));
ptr = g_pProcess->Read<DWORD64>(ptr + 0x0);
} while (ptr != 0);
}
delete[] ptrArr;
}
Funny... When the image I posted shortly after clearly shows units, game objects AND a dynamic object, all of which are grabbed from my object manager
But you can keep doing it wrong, fine by me. 🤷*♂️
I'll keep doing it thr right way, on top of having a functional bot
overlayed — ImgBB
Last edited by Razzue; 10-14-2022 at 03:13 PM.
"May all your bacon burn"
-
Member
Originally Posted by
Razzue
Funny... When the image I posted shortly after clearly shows units, game objects AND a dynamic object, all of which are grabbed from my object manager
But you can keep doing it wrong, fine by me. 🤷*♂️
I cant figure out what Im doing wrong...
Code:
auto entry = g_pProcess->Read<DWORD64>(ptr + 0x18);
its object ptr ?
-
-
Member
.....................................
Last edited by ermite66; 10-16-2022 at 07:03 AM.
-
Member
Anyone got any good tutorial and or resources for reading/writing memory with C#/.NETCore 7? Is there any memory reading writing library like BlackMagic but updated? Really want to get into this but I can never make it over the first edge finding out where to begin.
I know how to program in C# its just this memory editing i cant figure out how to get started with.