尝试捕获反射加载的DLL

时间:2017-09-12 15:12:41

标签: c++ windows dll code-injection

我正在测试这种注入技术(Reflective dll注入)并发现代码上的任何try / catch都会出现unhandle windows错误(KERNELBASE.dll,代码错误e06d7363)并且主机进程终止。

我正在注入一个带有基本功能的测试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;
    }
}

任何技术解释?

1 个答案:

答案 0 :(得分:0)

这可能是因为在进行注入时未正确设置异常处理。参见https://hackmag.com/uncategorized/exceptions-for-hardcore-users/

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

但是我怀疑问题更为复杂,因为我在标准测试用例中使用支持SEH的lib(SimplePELoader)加载标准内存DLL时遇到了类似的问题。