我向exe注入了一个DLL。现在我需要读取特定偏移量的数据。我的DLL代码:
DWORD ExeBaseAddress = (DWORD)GetModuleHandleA(0);
// HANDLE baseAddr = GetModuleHandleA(0)
uint16_t value = ExeBaseAddress + 0x7198BC + 0x70e;
cout << value << endl;
问题是它没有给我我期望的值1000
。它也没有给我正确的地址。
使用内存阅读软件,我可以获得 CORRECT 值。参见:
但即使我使用与内存读取应用程序完全相同的偏移量,我仍然从代码中得到错误的值。那我错过了什么?
我试过了,但它仍然给了我错误的价值。
HANDLE ExeBaseAddress = GetModuleHandleA(0);
uintptr_t p = (uintptr_t)ExeBaseAddress + 0x7198BC + 0x70e;
int value = *reinterpret_cast<int *>(p);
cout << ExeBaseAddress << " - " << value << endl;
答案 0 :(得分:3)
通过OP的所有长篇评论和聊天(一些基本输入),解决方案找到了方向,
加载的exe将另一个PE的基地址存储在0x7198BC位置。此基址+偏移量(0x70E)包含所需的值。
@media only screen and (max-width: 991px) {
.a-checkpoint-list > ul {
margin-left: 15%;
}
.a-checkpoint-list > ul li {
padding-left: 10%;
}
}