尝试捕获反射性加载的DLL

try catch on reflective loaded dll

本文关键字:加载 DLL 反射性      更新时间:2023-10-16

i正在测试此注入技术(反射dll注射),并发现代码上的任何尝试/捕获都会升起无手窗口错误(kernelbase.dll,code Error e06d7363)和主机进程死亡。

i正在注入基本功能的测试DLL。工作流程是:打印"启动..."然后死亡。

我的dll。

bool WINAPI DllMain(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpReserved)
{
    bool bReturnValue = TRUE;
    switch (dwReason)
    {   
        case DLL_PROCESS_ATTACH:
            function();
        break;
    }
    return bReturnValue;
}
void function()
{
    cout << "starting..." << std::endl;
    try
    {
        throw std::exception();
    }
    catch (...)
    {
        cout << " exception... " << std::endl;
    }
}

有任何技术解释?

这很可能是因为当您进行注射时,异常处理未正确设置。请参阅https://hackmag.com/uncategorized/exceptions-for-hardcore-users/。

您正在使用哪个库进行注射?它支持SEH吗?还是如果您自己做的话,您是否正确注册了处理程序?

我怀疑,但是这个问题更为复杂,因为我在标准内存dll加载的标准内存dll加载(简单的peloader)中都支持我的标准测试用例中的SEH。