无法转储进程

逆向工程 工具 调试 恶意软件 包装工 倾倒
2021-06-13 12:41:42

我正在尝试使用以下 MD5 反转恶意软件样本:ef668a0cd0755c67930ece13d28a6bda。

显然,这是一个打包的恶意软件。乍一看,它似乎是一些 GUI 程序,但在某些时候(0x4013E6)它会自我修改并完全变成另一个程序(恶意程序)。

我很确定 OEP 位于 0x401265。但问题是 - 此时我无法转储进程,这使分析变得困难,因为我只能在调试器中进行分析。我尝试使用 OllyDump,它抛出无法读取调试进程的内存(00400000..00408FFF),然后是错误的 DOS 签名!!. 我也在 ImmunityDBG 中尝试了 dump.py 但它没有帮助。

在我转储进程之前,我还尝试更改 Olly 中每个部分的内存访问权限。不幸的是,不可能在所有部分都更改它。另外,考虑到这个恶意软件样本在修改自身的同时创建了新的部分,是否会导致问题?

如果您想自己查看恶意软件样本,请在 0x40220F(这是解包存根开始的地方)设置第一个硬件断点。之后在 0x401265(我认为是 OEP)设置另一个。

如果您计算给我一个提示,我将如何转储该过程或我做错了什么,那就太好了。

先感谢您 :-)

1个回答

恶意软件可以删除/操纵其自己的 PE 标头。

void destroyPEHeaders(){
        DWORD OldProtect = 0;
        char *pBaseAddr = (char*)GetModuleHandle(NULL);
        VirtualProtect(pBaseAddr, 4096,
            PAGE_READWRITE, &OldProtect);
        srand(time(NULL));
        ZeroMemory(pBaseAddr, 4096);
        srand(time(NULL));
        for (int i = 0; i < 4096; i++){
            char *x = pBaseAddr;
            x += i;
            *x = rand() % 255;
        }
    }

像这样的东西通常会阻止像 CreateRemoteThread 调用这样的东西,所以也许它对转储做同样的事情?

也许您应该尝试重写原始 PE?