Originally Posted by
Empted
Originally Posted by VesperCore
It's just the first offset I posted in the thread, but well, they definitly don't know how to read :/ (not you)
You are way too agressive. "My thread", "they don't know". So I can inform you that you've given not CurMgr offset, but a ClientConnection one. To get CurMgr you read pointer and then add another offset to that, then read again. What I've posted above is direct pointer.
I don't want to be mean, but in your quote, there is "the thread", and not "my"..
clientConnection is just the same, don't be missleaded because of the name I gave to it, that guy asked for this "clientConnection" offset (old: 0xE416A0, new: 0xE3CB00) 'CurMgrPointer'.
Here a very basic implementations for a ObjectManager class.
Code:
public enum ObjectManager
{
clientConnection = 0xE3CB00,
objectManager = 0x462C,
firstObject = 0xCC,
nextObject = 0x34,
localGuid = 0xE0,
objectGUID = 0x28,
objectTYPE = 0xC,
}
ObjectManagerAddress = Memory.WowMemory.Memory.ReadUInt(Memory.WowMemory.Memory.ReadUInt(Memory.WowProcess.WowModule + Addresses.ObjectManagerClass.clientConnection) + (uint) Addresses.ObjectManager.objectManager);
const uint firstObject = (uint) Addresses.ObjectManager.firstObject;
const uint nextObject = (uint) Addresses.ObjectManager.nextObject;
ulong localPlayerGuid = Memory.WowMemory.Memory.ReadUInt64(ObjectManagerAddress + (uint) Addresses.ObjectManager.localGuid);
int currentObject = Memory.WowMemory.Memory.ReadInt(ObjectManagerAddress + firstObject);
while (currentObject != 0)
{
ulong objGuid = Memory.WowMemory.Memory.ReadUInt64((uint) currentObject + (uint) Addresses.ObjectManager.objectGUID);
WoWObjectType objType = (WoWObjectType) Memory.WowMemory.Memory.ReadInt((uint) currentObject + (uint) Addresses.ObjectManager.objectTYPE);
************** YOUR NEEDS, save it or whatever for your object manager **************
Int32 currentObjectNew = Memory.WowMemory.Memory.ReadInt((uint) currentObject + nextObject);
if (currentObjectNew == currentObject)
{
break;
}
currentObject = currentObjectNew;
}
You gave a wrong offset than the one asked, that's it, no biggies, that guy asked for 0xE3CB00 as the previous were 0xE416A0.
When I say, "they don't know how to read", I think about him, asking for an offset already posted when it's forbidden to ask for an offset, but can also work for you, you want to help someone but you don't read its need and give him something he is not looking for.
Originally Posted by Empted
Originally Posted by hqvrrsc4
Anyone got CurMgrPointer?
(16992 : 0xE416A0)
rebased:
CurMgr = 0xC30974, //55 8B EC A1 ?? ?? ?? ?? 8B 88 ?? 00 00 00 PATTERN
Code:
*(_DWORD *)(dword_E3CB00 + 0x462C) = v3;
*(_DWORD *)(v3 + 0xF0) = dword_E3CB00;
dword_C30974 = v3;
Code:
ObjectManagerAddress = Memory.WowMemory.Memory.ReadUInt(Memory.WowMemory.Memory.ReadUInt(Memory.WowProcess.WowModule + Addresses.ObjectManagerClass.clientConnection) + (uint) Addresses.ObjectManager.objectManager);
ObjectManagerAddress = Memory.WowMemory.Memory.ReadUInt(Memory.WowProcess.WowModule + 0xC30974);
Use the implementation you want, but he asked for the first one and you gave him the second one.
Don't blame me for being aggressive, I haven't even been.
I don't understand, how would you define the sub_#'s to what function it is ? That's the problem i have by digging current offsets, i'm new to this. Any advice would be highly appreciated.
Simply right clic on any offset in IDA => Rename, put a name there.
For function, right clic on the function at the top of the current graph, all that also work in PseudoCode mode.