反射DLL注入的代码在stream.open()上崩溃
我试图通过反射DLL注入加载库,但调用stream.open()时崩溃;调用fopen()会产生相同的结果 对于反射dll注入,我基本上遵循以下步骤:反射DLL注入的代码在stream.open()上崩溃,dll,reverse-engineering,dll-injection,Dll,Reverse Engineering,Dll Injection,我试图通过反射DLL注入加载库,但调用stream.open()时崩溃;调用fopen()会产生相同的结果 对于反射dll注入,我基本上遵循以下步骤: 在缓冲区中加载dll内容 创建一个文件映射和文件的映射视图,然后在那里复制NT头和节 将映射的内容复制到缓冲区并关闭映射 重新生成导入表 重建重新安置 在目标挂起的进程中分配内存,并在那里复制缓冲区 CreateRemoteThread启动dllMain(当目标进程仍然挂起时) 加载代码并执行dllmain 我的家人看起来像这样: BOOL AP
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
logFile.open("hookLog.txt", std::ios::out);
logFile << "DLL Attached\n";
HRESULT nResult = InitCoCreateInstanceHook();
logFile << "Hook initialized with result: " << std::to_string(nResult) << "\n";
logFile.flush();
}
BOOL-apient-DllMain(HMODULE-HMODULE,
德沃德·乌尔打电话的理由,
LPVOID lpReserved
)
{
打开(“hookLog.txt”,std::ios::out);
在调用DllMain之前,您需要调用初始化标准库的日志文件。您正试图通过直接调用DllMain来绕过该初始化。或者您可能可以使用不需要此类初始化的纯WinAPI。感谢您的深入了解。我在技术上调用dll入口点上的执行,如e PE文件。在这种情况下不应该调用_DllMainCrtStartup吗?_DllMainCrtStartup是dll的入口点,因此如果调用它,将调用标准库初始化例程。如果仍然存在问题,则可能需要使用不同属性映射dll的某些部分:RO、RW、EXEC Only。可能是全局v的部分需要修改的变量被映射到只读进程中,因此初始化没有正确完成(虽然在这种情况下我预期会出现页写异常)注入内存区域被分配了页执行读写,也许我仍然应该更改它,但我得到的是访问冲突。