脱壳系列_1_UPX壳_详细版 1 UPX壳的背景知识 2 查看带壳程序信息 3 使用OD打开

UPX壳的功能有两种:给程序加壳、压缩程序

简述:将程序压缩(体积变小),在每次程序运行执行时实时的对程序解压缩。upx和普通的压缩区别就在于实时性

2 查看带壳程序信息

  • 使用PeID查看

脱壳系列_1_UPX壳_详细版
1 UPX壳的背景知识
2 查看带壳程序信息
3 使用OD打开

  • 使用ExeInfoPE查看

脱壳系列_1_UPX壳_详细版
1 UPX壳的背景知识
2 查看带壳程序信息
3 使用OD打开

分析:

        使用两个PE分析工具可以看出入口点是 0X0006DFF80,链接器版本是2.25,以及UPX 0.89

3 使用OD打开

  • 看到一个pushad

脱壳系列_1_UPX壳_详细版
1 UPX壳的背景知识
2 查看带壳程序信息
3 使用OD打开

  • 意味着我们可能使用平衡ESP的方法找到入口点

1. 搜索popad

脱壳系列_1_UPX壳_详细版
1 UPX壳的背景知识
2 查看带壳程序信息
3 使用OD打开

分析:

       在搜索指令的时候一般不要点上整个块,先默认往下搜

       注意:我们看到有两个跳转,一般OEP的跳转都是无条件的,大致断定是0x0046e133这个地址上的指令跳转目标是OEP。检测一下:把鼠标放在第一个上你会发现这里是一个循环,额你看一下跳转目标 就在上面第一条指令哪儿。。。尴尬,那这就是一个循环。现在可以很确定第二个跳转指令是我们想要的。

鼠标双击一下那个跳转地址:

脱壳系列_1_UPX壳_详细版
1 UPX壳的背景知识
2 查看带壳程序信息
3 使用OD打开

有点茫然的发现 这不像是OEP啊。

别慌,这里是UPX壳,有加密的在运行的时候实时解密。我这里的EIP还没有动过,所以还在壳入口还没有解压缩。

在跳转指令那儿下一个断点单步进去:

脱壳系列_1_UPX壳_详细版
1 UPX壳的背景知识
2 查看带壳程序信息
3 使用OD打开

这下就对了。

然后ollyDump下来,用impREC修复一下IAT就行了。

有空的时候再追加上这里面算法的详细分析。。。