恶意代码分析实战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.《恶意代码分析实战》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值