逆转自修改恶意软件

逆向工程 拆卸 ollydbg 恶意软件 开箱 免疫调试器
2021-07-07 01:48:10

最近我得到了一个自我修改.text部分的样本所以,我.text在写操作的部分放置了一个断点,然后继续。我发现它将该.text部分清零,然后将解密的代码写入该部分,然后调用解密的 OEP。我使用 Scylla 来更正 OEP 并转储.exe文件。

Scylla_output

当我获得导入时,它显示该程序仅导入kernel32.dll.

PEBear_输出

这是转储.exe文件在PEBear.

免疫DBG_output

这就是我尝试在ImmunityDbg.

我得到的导入也与Scylla给我的非常不同+ 转储的程序不运行它立即崩溃。我究竟做错了什么?

谢谢。

2个回答

首先在入口点本身上放置一个断点,它可能根本不在 .text 部分中,而是完全在另一个部分中。您将看到程序动态解析自己的导入,可能是通过在 kernel32.dll 中搜索 LoadLibrary 和 GetProcAddress。

通过跟踪顶层,您还会发现解密何时完成以及控制权何时转移到解密代码。如果你在那个时候dump文件,然后反汇编结果,你或许能看到崩溃的原因——很可能是反调试机制,这里列举的可能性太多了(但请看http://pferrie.host22.com/papers/antidebug.pdf中选择了一些常用的)。

感谢所有回复的人。IAT 是问题所在。我发现的 OEP 是指向解压代码的真正 OEP。但是转储的可执行文件无法运行,因为 IAT 已损坏。在 Scylla 中修复 IAT 后。现在可以运行了。