【发布时间】:2016-12-30 23:18:22
【问题描述】:
我正在尝试读取应该是数字 20 的进程的地址。我确定该地址位于 dll 基本偏移量 + 偏移量为 10 的数字。我正在使用
ReadProcessMemory(phandle, (void*)address, &number, sizeof(number), 0);
读取特定地址。我的问题是如何正确搜索位于“57B86F68”+ 10 偏移的地址?
【问题讨论】:
-
请记住,除非您禁用它,否则您可能必须处理 ASLR。 en.wikipedia.org/wiki/Address_space_layout_randomization
-
这有点令人困惑。您是在寻找地址
0x57b86f68 + 10还是在寻找存储在该位置的地址(或其他类型的值)?无论哪种方式,您都不需要搜索任何内容。 -
@drescherjm,我确保通过代码获取基地址,因此据我所知,这不是问题。
-
@molbdnilo 很抱歉造成混淆,因此在某个位置有一个静态指针。我找到了这个位置,它指向一个地址,偏移量为 10 的地址是我要读取的值。我不确定我怎么能做到这一点。例如,我正在读取地址 a,它指向 b。我不是试图获得 b + 10 的值,有没有简单的方法可以做到这一点?
-
@Jack 在调用
ReadProcessMemory后调用GetLastError以获取有关ReadProcessMemory失败原因的更多信息。检查你的OpenProcess标志,PROCESS_VM_READ也应该在那里。