Reverse | 使用UPX对软件进行加壳

题目描述:

      主机C:\Reverse\6目录下有一个CrackMe6.exe程序,这个程序是使用upx程序加过壳的,请尝试对其进行手工脱壳,并编写详细的分析报告。要求脱壳后的程序可以正常运行。

实验步骤:

1、观察程序的外部特征

      运行C:\Reverse\6\CrackMe6.exe程序,提示需要对该程序进行脱壳处理:

 使用PEiD载入程序,查看CrackMe6.exe被加了什么壳:

 提示信息为“UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo”,可以初步断定程序被加过UPX壳了。尝试使用IDA对这个加了壳的程序进行分析:

弹出了一个警告提示:

 通常弹出这样的提示都意味着程序经过了加壳处理,这时候最好不要直接使用IDA去进行分析,加壳后的程序很难通过IDA的静态分析来理解程序的内部执行逻辑。

2、使用Ollydbg进行脱壳

使用OD载入CrackMe6.exe程序,OD的反汇编窗口停留在一条pushad指令上面,按下F8单步跟踪到下一条指令,然后在右侧的寄存器窗口中选中ESP寄存器(可以看到ESP寄存器的值为0012FFA4),并单击鼠标右键,在弹出的右键菜单中选择“数据窗口中跟随”,如图所示:

 在反汇编指令窗口下面的数据窗口中,选择0012FFA4开始的四个字节,并单击鼠标右键,在弹出的右键菜单中依次选择“断点”——“硬件访问”——“Dword”菜单项,如图所示:

 接下来按F9运行程序,程序运行一段时间后OD将自动断下,这时候先删除之前设置的硬件断点,依次选择菜单项中的“调试”——“硬件断点”,删除设置的硬件断点:

按F7进行单步跟踪,直到运行到0043FD24这一条指令,当然这里有一个循环比较麻烦,我们可以直接在0043FD24按下F4即可(F4代表运行到光标所在行),然后再次F7单步跟踪,来到004094F8。

现在在反汇编指令窗口中单击鼠标右键,选择“Dump debugged process”菜单项,在弹出的OllyDump窗口选择“Dump”按钮保存文件,注意记住这里的94F8,这是程序的入口点信息。我们将程序保存为dumped.exe,如图所示:

不关闭OD,后面还需要进行修复操作。对UPX脱壳而言,进行到这一步就可以了,但是如果是另外一些壳,可能还需要对程序的输入表进行修复操作。

2、修复脱壳后的程序

打开ImportREC程序,首先在进程列表中选择C:\Reverse\6\crackme6.exe,然后在OEP中填入94F8(也就是在OD中找到的一个信息),然后点击“IAT AutoSearch”按钮,接着点击“GetImports”按钮,就可以看到程序的输入表信息了。

点击右侧的“Show Invalid”按钮,看看是否存在无效的输入表项目。无效的输入表项目前面带有问号(?),如果有可以使用右键菜单删除。这里没有无效的输入表项目,所以选择“Fix Dump”按钮,对我们的dumped.exe进行修复,得到dumped_.exe程序。

现在对程序的脱壳以及修复操作已经全部完成,使用PEiD对dumped_.exe程序查壳,可以看到提示“Microsoft Visual C++ 6.0”信息,dumped_.exe程序也可以正常运行,至此脱壳完成。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值