在我成功地将我的dll注入(inject)我的目标进程后,说“target.exe”,我怎样才能得到“target.exe”的基地址?
我试过 GetModuleHandle(0) 和 GetModuleHandle("target.exe") 但它似乎不正确,我不确定如何调试。我试过这样打印它:
//retrive target's base address
DWORD EXEBaseAddr = (DWORD) GetModuleHandle((LPCWSTR)"target.exe");
std::stringstream sstr;
sstr << EXEBaseAddr;
std::string str = sstr.str();
String^ str3 = gcnew String(str.c_str());
baseAddressLBL->Text = str3;
我不得不在最后再次强制转换它,因为我正在使用 Windows 窗体(不确定它是否如此称呼)在我的界面中打印地址。
最佳答案
您正在使用宽版本的 GetModuleHandle
(即 GetModuleHandleW
),因此您必须向它传递一个有效的宽字符串。你的错误是你将一个非宽字符串转换为一个宽字符串,这是行不通的。请改用以下内容:
(DWORD)GetModuleHandleW(L"target.exe");
或者,下面的,完成同样的事情:
(DWORD)GetModuleHandleA("target.exe");
关于c++ - DLL注入(inject)后如何获取目标进程的基地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18553966/