手工脱壳之 ASPack压缩壳【随机基址】【重定位表加密】

一、工具及壳介绍

 使用工具:Ollydbg,PEID,ImportREC,LoadPE

ASPack壳:

 

二、脱壳

1.ESP定律

ASPack壳明显多了两个区段:

   

   

开头是pushad,可以采用ESP定律脱壳。

   

   

esp下硬件断点:

   

   

断下来的地方单步几步,来到OEP。

   

   

第一个call是VC特征初始化安全Cookie,确认是OEP。

   

   

查看模块基址,exe基址,用OllydbgDump Dump下进程内存。

   

 

   

使用ImportREC修复IAT

   

   

完成后双击运行。

 

 

2.逆向重定位加密 

双击发现运行不起来,推测是随机基址的问题。PEID查看重定位表数据。

重定位表被破坏:

 

 

目标:找到加密重定位表的代码块,进行逆向分析。

操作:通过重定位表数据 顺藤摘瓜。

加壳的区段信息脱壳后的区段信息对比:

 

   

   

可见重定位表的映射内存RVA是一样的。

OD重新加载原程序。获取加载基址。 

 

   

0x12F000+16000 == 0x1306000。

此处是重定位表,下硬件访问断点:

   

   

首先断下处,根据内存框的数据一直在变动,判定解压数据的地方:

   

   

跳过解压循环:

 

   

F9后,接着断下。

   

   

查看内存框内 重定位表内存数据 已解压完毕,但明显不是重定位表数据。

根据ECX,推测此行代码是 把修改完成后重定位表 覆盖进来。

   

 

查看 重定位表内存数据 正确。

 

 

 

继续F9,接下来就是修复exe重定位的代码块了:

 

   

步过发现此代码块还进行加密重定位表数据

所以推测 exe代码的重定位修复加密重定位表 的操作都在此代码块。

   

   

跟踪分析,解析代码的流程。 

 

   

   

   

   

   

操作:NOP掉这条指令,再重复以上脱壳步骤。

查看重定位表数据:正常

 

 

 

双击运行发现还有错误。

 

   

   

显而易见,PE加载器并没有修复重定位,用LoadPE查看数据目录表信息。

   

   

重定位RVA并不是0x1600,可见APSack壳并不是采取自我代码修复重定位,

而是自己构造重定位表,让PE加载器修复自我,再另行修复exe的重定位。

修改回来即可。

   

   

成功运行:

   

   

 

个人总结:相比前面的ESP定律脱壳,感觉后面的重定位比较关键。

附件:

ASPack.exe

 

KID

转载于:https://www.cnblogs.com/KIDofot/p/8597000.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值