繁体   English   中英

DLL注入后如何获取目标进程的基地址?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM