我想为变量找到一个静态内存地址(在我自己的程序中),但是每次我重新启动进程时,它都会更改。我想找到变量的静态内存地址,所以我需要找到变量的基地址和偏移量。我环顾了互联网,但不知道如何获取所需的信息。
我需要一个进程(dll)来在内部修改另一个进程(exe)的内存。 我需要信息的变量是自定义类型。我只需要知道如何获取基地址(静态)和偏移量,然后就可以获取变量的地址。
目标代码:
class Editable
{
// Stuff
}
int main() {
Editable e;
std::cout << &e << std::endl; // The address of e changes every time I restart my process
}
攻击者代码(dll):
int main()
{
Editable* loc = (Editable*)0x0; // Replace 0x0 with address that I need to get
*loc = (value);
}
extern "C" __declspec(dllexport) BOOL __stdcall DllMain(HINSTANCE Dll, DWORD Reason, LPVOID Reserved)
{
if(Reason == DLL_PROCESS_ATTACH)
{
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)main, 0, 0, 0);
}
return TRUE;
}
}
我想要得到的是这样的: (我要获取的指针的静态基址)+(我要获取的静态偏移量)=(我要读取/写入的位置) 谢谢。