[英]How can I get the base address of the target process after DLL injection?
将dll成功注入目标进程后,说“ 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");
GetModuleHandle(NULL);
确实会获取当前正在运行的进程的ID;),因此,如果您的代码正在target.exe进程内运行,则应该使用该API调用来检索进程ID,确定可以成功注入dll并跳过调用你的代码?
如果您确定代码可以正常工作,则可以尝试使用GetCurrentProcessId();
函数检索调用进程的ID :)在MSDN上获取有关它的更多信息
http://msdn.microsoft.com/en-us/library/windows/desktop/ms683180(v=vs.85).aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.