没有得到正确的地址与指针和偏移量

时间:2019-01-03 11:58:14

标签: c++ pointers dll cheat-engine

我是C ++的初学者, 我正在尝试在CS:GO中获得玩家的健康值,但我遇到了一些问题。使用CheatEngine,我发现播放器库为“ client_panorama.dll” + 0xCBD6B4,运行状况值的偏移为0x100。效果很好,但是我很难将其转换为c ++。 我正在使用DLL注入,但是在注入的DLL中,我无法获得与CheatEngine中相同的地址。 CE图片:https://i.imgur.com/TlUwZV3.jpg

我正在几个论坛上寻找解决方案,但找不到。到目前为止,这是我的代码尝试:

DWORD dwClientBase = (DWORD)GetModuleHandleA((LPCSTR)"client_panorama.dll");
DWORD dwClientBaseOffset = 0xCBD6B4;
DWORD dwOffset = 0x100;

DWORD dwplayerBase = *(DWORD *)(dwClientBase + dwClientBaseOffset);

但是这种尝试使我无法获得与Cheatengine中相同的PlayerBase地址。

背景知识:我不是在尝试破解,而是学习如何从真实游戏中提取信息。将来,我想尝试为真实游戏编写AI编程,因此,如果您获得的不仅仅是游戏的视觉输出信息,那将非常有帮助。

感谢您的帮助, Varsius

1 个答案:

答案 0 :(得分:0)

您的代码正确。如果您的代码正确执行,则dwplayerBase将等于播放器对象的地址。

如果要获取运行状况地址,则需要添加dwOffset。我相信您的困惑是因为您希望得到健康地址。要获得它,只需添加以下行:

DWORD healthAddr = dwplayerBase + dwOffset;