【问题标题】:Not getting the right address with pointer and offsets没有使用指针和偏移量获得正确的地址
【发布时间】:2019-01-03 11:58:14
【问题描述】:

我是 C++ 的初学者,并且 我正在尝试在 CS:GO 中获取玩家的 Health-Value,但我遇到了一些问题。使用 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,因此如果您拥有更多信息而不仅仅是游戏的视觉输出,这将非常有帮助。

感谢您的帮助, 瓦西斯

【问题讨论】:

  • 您忘记添加dwOffset,但您最好显示所有涉及真实案例的数字,然后我们才能更好地为您提供帮助。

标签: c++ pointers dll cheat-engine


【解决方案1】:

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

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

DWORD healthAddr = dwplayerBase + dwOffset;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 2020-02-24
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多