恶意代码分析实战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的主要内容,如果未能解决你的问题,请参考以下文章