手动脱FSG壳实战--吾爱破解培训第一课作业3

作者:Fly2015

对于FSG壳,之前没有接触过是第一次接触,这次拿来脱壳的程序仍然是吾爱破解论坛破解培训的作业3的程序。对于这个壳折腾了一会儿,后来还是被搞定了。

1.查壳

首先对该程序(吾爱破解培训第一课作业三.exe)进行查壳:

很遗憾,这次DIE也不行了,不过没事。

2.脱壳

OD载入该加壳的程序进行分析,下面是入口点的汇编代码:

起初对于该种加壳程序也是比较陌生,但是由于OD使用的还算熟悉,以及结合该加壳程序获取函数的API调用地址的特点,很快发现了该程序的关键点汇编:

于是在地址004001D1处F2下断点,然后F9运行到该地址004001D1处,地址0041DDAC就是被加壳程序真实的OEP的地址。

F7单步跟进到地址0041DDAC处,遗憾的是没有看到我们熟悉的入口点的汇编代码,但是不要急,OD没有将汇编代码正确的显示出来,需要我们自己手动的进行数据的反汇编解析:

选中地址0041DDAC处没有正确显示的数据,然后 右键 如图,选择 分析-->分析代码 即可正确显示了。

手动选择分析代码以后,地址0041DDAC处的数据的显示,是不是很有亲切感啊,令人熟悉的入口点汇编代码出现了,但是不要急,这才是第一步。

很自然的下一步就是使用OD的插件OllyDump进行程序的脱壳操作,但是这里对于这种壳这样直白的脱壳方式并不管用,需要使用Load PE结合RECImport工具进行完美脱壳。因为被FSG加壳的程序的IAT表不是连续的,脱壳工具不能智能的识别那些内存数据是函数的地址,因此需要我们自己手动的识别那些是函数的地址那些不是函数的地址,然后使用工具脱壳。

需要脱壳程序暂停在地址0041DDAC处,使用Load PE工具将其此时的内存PE镜像手动Dump出来(完全脱壳方式),如图。

注意,此时Dump出来的程序还不能运行,需要为该Dump程序正确的修复IAT表,它才能运行起来。

通过上面的调试,了解到程序的真实OEP的RVA地址为001DDAC,使用RECImport工具进行该Dump程序的IAT表的修复。

1.常规的修复IAT表的方式:

在RECImport工具的OEP处手动填写001DDAC,然后点击 IAT 自动搜索-->获取导入表-->修正转储。

IAT表修复后的脱壳程序的运行,如图。

很显然,刚才的IAT表的修复没有修复成功,如果IAT表修复成功的话,运行脱壳后的程序就不会出现下面这个不友好的界面提示。

2.手动修复IAT表的方式:

遗憾啦,RECImport工具没用使用好,通过OD查看内存数据发现,RECImport工具对Dump后的程序的IAT的修复不完全。

在RECImport工具中,IAT自动搜索到的程序的导入表的函数不完全。如图,函数导入表的起始RVA地址是000320BC,函数导入表的结束RVA地址是000320BC+200=000322BC也就导入表函数的个数是0x200,但是经过OD的观察发现,这两个参数有误。

回到OD调试程序中,在HEX数据区,Ctrl+G定位到地址00410000地址处,然后如图,设置数据的显示方式:长整型-->地址 显示方式。

OD数据视窗-地址显示方式视图:

经过手动拖动查找的方式,发现该被加壳程序的导入表的入口RVA地址应该是00032000 不是地址000320BC处,并且导入表的结束RVA地址是00032554,因此导入表函数的大小应该是32554 - 32000 = 554 个(十六进制)。

导入表的起始RVA地址:00032000.

导入表的结束RVA地址:00032554 ,因此导入表函数的大小应该是32554 - 32000 = 554 。

经过上面的分析和观察以后,如下图填写RECImport工具中需要的参数,然后直接点击 获取导入表 千万不要点 IAT自动获取 否则前功尽弃。

点击 显示无效的  函数发现,在获取到的导入表中的函数存在无效的函数地址,确实通过OD也发现了函数的地址不是连续的,有些函数之间是0x7FFFFFFF不是有效的函数地址。

由于0x7FFFFFFF不是有效的函数地址,因此需要去掉这些无效的函数地址。右键选择中这些无效的函数地址,然后如图选择 剪切指针 即可删除这些无效的函数地址。

Ok,现在就可以使用这些剩下的有效的IAT表的导出函数地址进行Dump程序的修正转储了,如图。

运行经过有效的IAT修复的程序的视图。

FSG脱壳分析文档的和脱壳后的程序的下载地址:http://download.csdn.net/detail/qq1084283172/8883891

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2025-01-12 16:05:37

手动脱FSG壳实战--吾爱破解培训第一课作业3的相关文章

手动脱UPX 壳实战--吾爱破解培训第一课作业1

作者:Fly2015 Windows平台的加壳软件还是比较多的,因此有很多人对于PC软件的脱壳乐此不彼,本人菜鸟一枚,也学习一下PC的脱壳.要对软件进行脱壳,首先第一步就是 查壳,然后才是 脱壳. 推荐比较好的查壳软件: PE Detective .Exeinfo PE.DIE工具. 需要脱壳的程序是吾爱破解论坛的windows逆向破解培训http://www.52pojie.cn/thread-378612-1-1.html第一课的作业题1. 1.对该程序(吾爱破解培训第一课作业一.exe)进

手动脱NsPacK壳实战--吾爱破解培训第一课作业2

作者:Fly2015 这里脱壳的程序是吾爱破解培训的作业2,相较于作业1稍微要强一点,但是只要掌握了脱壳的ESP定律,脱这个Nspack壳并不难,不过还是蛮有意思的. 1.使用查壳软件对加壳的程序进行查壳. 使用PE Detective查壳的结果: 使用DIE查壳的结果: 2.OD载入程序进行脱壳操作 OD载入以后,被加壳程序的入口点的汇编代码,如图.很显然,加壳程序载入OD以后,发现有3个pushad指令,因此在进行程序脱壳的时候,根据ESP定律需要下3个硬件断点. 根据该加壳程序载入OD的汇

手动脱WinUpack 壳实战--吾爱破解培训第一课选修作业六

作者:Fly2015 吾爱破解培训第一课选修作业第6个练习示例程序.不得不重复那句话,没见过这种壳,该壳是压缩壳的一种,相对于压缩壳,加密壳的难度要大一些,特别是IAT表的修复问题上. 首先分别使用DIE和Exeinfo PE对该加壳程序进行查壳的处理. OD载入加WinUpack 壳的程序进行动态调试分析,加壳程序入口点反汇编快照. 想都不用想,看到PUSHAD直接ESP定律脱壳F8单步一步,ESP寄存器右键设置硬件写入断点.F9运行程序,程序自然的断在设置的硬件断点处,如图. 有点惊呆了,硬

手动脱RLPack壳实战--吾爱破解培训第一课选修作业七

作者:Fly2015 吾爱破解论坛培训第一课选修作业练习的第7题.这个壳没听说过,但是脱起来比较简单,根据ESP定律即可直达光明,Dump出原来的程序. 老规矩,首先对需要脱壳的程序进行查壳处理. 使用DIE查壳的结果,程序加的是RLPack壳并且原程序是用微软编译器编译的. OD载入加壳程序进行调试分析,入口点代码反汇编快照. 看到PUSHAD指令想都不要想,直接ESP定律脱壳.F8单走一步在ESP寄存器上设置硬件写入断点,然后F9运行程序,程序自然断在刚才设置的硬件断点处. 显然JMP指令的

手动脱KBys Packer(0.28)壳实战--吾爱破解培训第一课选修作业五

作者:Fly2015 吾爱破解培训第一课选修作业第5个练习程序,在公司的时候用郁金香OD调试该加壳程序的时候出了点问题,但是回家用吾爱破解版的OD一调试,浑身精神爽,啥问题也没有. 首先使用查壳工具对加壳的程序进行查壳操作. OD载入需要脱壳的程序进行动态调试和分析,加壳程序入口点反汇编快照. F8单步跟踪程序几步,发现了比较熟悉的PUSHAD指令,又可以轻松的使用ESP定律进行程序的脱壳了. F8单步到指令PUSHAD的下一条指令,ESP寄存器右键设置HW Break硬件写入断点,F9畅快的运

手动脱PeCompact 2.20壳实战-吾爱破解培训第一课选修作业四

作者:Fly2015 PeCompact壳又是一个没有听说过的壳,需要脱壳的程序是吾爱破解培训的第一课的选修作业四.最近对脱壳有点上瘾了,当然也遭受了脱壳受挫的无奈,但是比较幸运还是把这个壳给搞了. 对加壳程序进行查壳. 工具DIE显示程序加的是PeCompact壳,并且原来没加壳的程序使用Microsoft Visual C/C++(2008)编写的,这一点对于查找原程序的真实OEP非常有帮助. OD载入加壳的程序进行分析,加壳程序的入口点的汇编代码. F8走了几步,坑啊,写壳的作者在代码中设

手动脱FSG壳实战

作者:Fly2015 对于FSG壳.之前没有接触过是第一次接触.这次拿来脱壳的程序仍然是吾爱破解论坛破解培训的作业3的程序.对于这个壳折腾了一会儿,后来还是被搞定了. 1.查壳 首先对该程序(吾爱破解培训第一课作业三.exe)进行查壳: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 非常遗憾.这次

吾爱破解第一次培训--破解基础知识之介绍常见工具和壳的特征

L程序的运行日志 e是加载的线程 m内存 T线程 w窗口 h句柄信息 c反汇编窗口 p修改后的信息 易语言的特征代码 1: 004107E2 FC cld 2: 004107E3 DBE3 finit 3: 004107E5 E8 E2FFFFFF call 吾爱破解.004107CC 4: 004107EA 68 D7074100 push 吾爱破解.004107D7 5: 004107EF B8 03000000 mov eax,0x3 6: 004107F4 E8 41000000 cal

吾爱破解脱壳练习第五期------upx壳

内存镜像法: 载入OD: 内存镜像法在资源节下断点: 运行,停在这里: 再下断点: 运行,停在这里: 往下跟踪,凡是向上跳的就F4跳过. 注意这里,如果F4跳过jmp到call的位置就会跑飞,所以我们F4跳到红框的位置: 直到这里,有一个大跳转: 就跳转到了OEP: