首页 > 解决方案 > 指向值的指针的 C++ 静态指针

问题描述

我对 C++ 很陌生,不太了解如何正确使用指针。我有一个要注入程序的dll。我知道在“program.exe + 0x29D2CC”指向的地址是另一个指向我在这个结构中称为 entList 的结构的指针,我的类 ent 有多个实例。所以我试图获取 entList 的第一个对象(我确定第一个对象是有效的)。

在以前的项目中,我可以这样做:

entList* entityList = *(entList**)address;

但在这里它不起作用。然后我尝试使用我在其他项目中也使用过的这个功能。

uintptr_t mem::FindDMAAddy(uintptr_t ptr, std::vector<unsigned int> offsets) {
    uintptr_t addr = ptr;
    for (unsigned int i = 0; i < offsets.size(); ++i) {
        addr = *(uintptr_t*)addr;
        addr += offsets[i];
    }
    return addr;
}

entList* entityList = (entList*)mem::FindDMAAddy(moduleBase, { 0x29D2CC, 0x0 });

使用这个我的注入器给了我错误“远程代码无法加载模块”。

我在互联网上搜索了这个,但由于我是新手,所以我不知道要准确搜索什么,也没有找到任何对我有帮助的东西。谁能告诉我如何获取 entList* 或我可以使用什么方法来获取位于指针链末端的对象?

标签: c++pointersreverse-engineeringmemory-address

解决方案


推荐阅读