目标
我正在尝试将inject an x64 DLL
插入w3wp.exe
进程(IIS工作进程),以便使用Visual Studio调试DLL。
我做了什么
我正在使用Extreme Injector V3执行此操作。从Extreme Injector的进程列表中选择我的DLL和w3wp.exe进程的调试版本之后,单击Inject,然后看到一个MessageBox,告诉我该注入已成功完成。
我期望
我应该从DllMain看到MessageBoxA(0, "injected", 0, 0)
。但是,我看不到这样的东西!
DLL的代码
int __stdcall DllMain(HMODULE base, unsigned long reason, void* args)
{
if (reason == DLL_PROCESS_ATTACH)
{
return 1;
}
return 0;
}
您的代码不调用MessageBox(),它仅在注入时返回1。尽管不建议这样做,但是如果您只是出于实验目的而做,则代码应如下所示:
int __stdcall DllMain(HMODULE base, unsigned long reason, void* args) { if (reason == DLL_PROCESS_ATTACH) { MessageBoxA(0, "injected", 0, 0); } return 0; }
如果这不起作用,您需要尝试使用其他注射器,请确保您的注射器以管理员身份运行。
如果w3wp.exe以NT AUTHORITY \ SYSTEM的身份运行,则可能需要更高的权限