<逆向学习第三天>手动脱FSG壳,修复IAT。

 

其实对于简单的壳来说,脱壳常用的方法也无非是那几种,但是每种有每种的好处,具体使用那种方法视情况而定,我今天学习的这个壳很简单,但是重点在于修复IAT。

 

一、查壳:

 

FSG 2.0的壳。

 

二、脱壳:

上篇随笔所说的3种方法都可以使用,单步法,内存2次镜像,ESP,这里内存2次镜像我们发现没有.rsrc区段,所以我们可以直接从地址为00401000的地方下断点,运行。

 

脱壳过程这里就不再赘述,最后来到OEP进行脱壳。

 

看这个特征可以看得出,我们最近脱壳的程序的OEP特征全是这样,典型的VC++程序,我们需要记住这个特征,以及其他的编程软件的特征,在第一篇随笔有写过。

这里我将介绍第三种脱壳方式LordPE,以及修复软件ImportREC。

首先打开LordPE,选择进程,右键修复一下镜像大小,养成这个好习惯,再右键完整转存即可,就完成了脱壳。

然后我们用ImportREC来修复一下软件。

首先用REC选择一下进程,然后在OEP填写A860,可以看到我们OEP起始地址就是0040A860,所以我们只需要填写一下A86D,然后点击获取输入表他就可以自动获取。

 

看一下有没有无效函数,如果有无效函数删除指针后转存,没有的话直接转存修复。

 

我们再来查一下壳。

 

壳已经脱掉,VC++写的软件,我们发现脱完壳修复完竟然打不开。

 

好,本文的重点来了,手动修复IAT。

首先我们在OEP下随意找一个类似的CALL。

 

我们发现425210地址减去基址400000,25210在REC查找的函数里是存在的,一模一样,所以我们利用这个来修复IAT,

 

我们在输入命令 d 425210 在数据窗口跟随

 

 向上寻找,一直找到没有指针或者地址全为0的地方。再向下寻找,找到指针结束,记录一下结束前的指针地址。

 

 

 

 

然后我们用ImportREC修复

选择进程——OEP A86D 自动查找IAT——获取输入表

 接下来我们在RVA的位置输入开始的指针地址,00425000 减去 基址00400000 得到 25000,就在RVA的位置输入25000。

在Size位置输入范围,即结束指针地址减去开始指针地址,00425280 减去 00425000 得到280,就在Size位置输入280。然后获取输入表。

显示一下无效函数,然后剪切指针,转存到文件即可。

查一下壳,可以打开。

其实REC修复的时候Size可以直接填1000,然后剪切无效指针,都一样都一样。

转载于:https://www.cnblogs.com/Ryancxyxx/p/8277710.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值