恶意代码分析实战18-2

Posted Neil-Yale

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了恶意代码分析实战18-2相关的知识,希望对你有一定的参考价值。

本次实验我们将会分析lab18-03文件。
将lab18-3载入peview
在这里插入图片描述

可以看到这个壳是PECompact
载入od
在这里插入图片描述

默认405130为入口点
使用od的插件来查找oep
在这里插入图片描述

结果如下
在这里插入图片描述

插件猜测的oep起始位置在40a110
但是这里的这些指令不像是oep。
而且这里它访问的值在0040a115处的栈底指针上方,如果这个地址不是文件的入口点,那么栈底指针之上的任何数据都不会被初始化。

使用另外一个插件选项
在这里插入图片描述

结果如下
在这里插入图片描述

暂停在了ntdll中的一条指令上,这明显也不是oep
使用插件不行的话,我们查看尾部跳转是否容易定位
在这里插入图片描述

在上图阴影指令是一条retn指令,后面是一段0字节。
我们在这里下断点,执行过来
在这里插入图片描述

可以看到,没有命中我们下的位置,而是显示了一个异常
说明这种方法也不起作用了
我们查看程序默认的入口点
在这里插入图片描述

jmp指令会直接跳到00405138,而00405138,00405139的pushfd,pushad会影响内存。这些指令保存了所有的寄存器和标志信息,加壳程序很可能在跳转到OEP之前恢复所有的寄存器和标志,所以我们可以通过在栈上设置一个断点来尝试找到oep
在尾部跳转之前会有一个popad或popfd,将帮助我们找到oep
单步执行到call指令时
在这里插入图片描述

在上图右侧可以看到此时esp为0012ffa0
右键,如下操作
在这里插入图片描述

将地址载入到内存转储中

选中栈顶的前四个字节,如下操作
在这里插入图片描述

然后执行
在这里插入图片描述

可以看到断在了0040754f
看到了retn 4会将程序转移到另一个位置运行,这可能是尾部跳转,我们单步执行到这里,接着就来到了401577处
在这里插入图片描述

如下操作
在这里插入图片描述

强制od反汇编这些代码,结果如下
在这里插入图片描述

在右侧可以看到eip现在指向了00401577的位置
如下操作转储程序
在这里插入图片描述

点击get eip as oep
在这里插入图片描述

然后单击dump即可保存
再次使用peid查看新文件
在这里插入图片描述

可以看到脱壳成功了

1.《恶意代码分析实战》

以上是关于恶意代码分析实战18-2的主要内容,如果未能解决你的问题,请参考以下文章

恶意代码分析实战3-2

恶意代码分析实战3-2

恶意代码分析实战11-1

恶意代码分析实战9-1

恶意代码分析实战14-02

恶意代码分析实战11-2