通达信主程序脱壳全记录(图文)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

通达信主程序脱壳全记录(图文)

UPX加壳入口第一句是PUSHAD;出口关键字POPAD;手动脱壳时,用Olldbg载入程序,脱壳程序里面会有好多循环。对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈。

第一步,先侦壳,侦壳工具为peid0.92,侦测结果如下:(图000)

(图000)

原来是UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo加的壳,UPX是一种压缩壳,强度很低。

第二步,我们请出调试利器:Ollydbg1.09,载入程序,出现提示:

用F8进行单步跟踪,对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈那就是设置“断点”。见上图(图004 005 006 007)

下走。(后面碰到类似的情况,处理方法一样。)

一直往下找,直到发现“POPAD”时,在其地址处设置“断点”―――“运行到选定位置F4”,然后继续F8往下走。(图008 009)

下走。

在走几行,就会出现上图画面,“00622838A”55 DB55 CHAR‘U’―――这是通达信主程序代码的真

点击右键调出菜单,选择“用OllyDump脱壳调试进程”。(图012)

=========下图为重新载入已脱壳的新文件(图015)==========

用“PEID”检测,提示已无壳。(图016),但该文件还不能正常启动,因为“输入表”尚未修复。

第三步,就是修复程序的输入表。使用importREC,这是最好用的输入表修复工具。

1、运行加壳的原版TDX主程序,启动importREC程序,(图018)在“附加一个活动进程”中选择“D:\通达信分析家l论坛版本\TDX.EXE”。

2、在“所需的IAT信息”中的“OEP”填入“0022838A”,点击“自动搜索”按钮,出现下图提示:(图019)

3、点击“获取输入表”按钮:(图020)

4、点击“修复转存文件”按钮,选择前面已完成脱壳的新文件,程序会自动生成一个新的“******_。EXE”的执行文件:(图021 022)

5、再用“PEID”检测,提示已无壳,编程软件是Microsoft Visual Basic 5.0 / 6.0。

运行程序,已经可以正常运行了,脱壳完毕。

通达信主程序脱壳全记录(图文)第二集

在上一集里,我们通过手动跟踪,一步一步的完成整个脱壳过程,目的是初步认识加壳程序的一般性规律,了解程序语言的执行过程。作为初学者,反复练习,不断增强对程序流程的直觉和理解,这样的学习过程非常重要,至少我本人就是这样对待的。

小结:

第一步,侦测程序的加壳类型;

第二步,在程序中寻找壳的起点和结束点;

第三步,继续跟踪确定程序真正的入口点;

第四步,利用操作软件的功能脱壳,抓取真正的程序源码;

第五步,启动原版程序,通过软件抓取输入表,转存到已脱壳的文件里,完成整个脱壳过程;

第六步,对新文件进行检验。OK

在以上列举的流程中,最难最麻烦的是第二步,今天又学了两个新招,与大家分享。

一、ESP定律手动脱壳

1、ESP定律的原理,网上可搜寻,不再详述。见谅。

2、脱壳过程:

---用F8进行单步跟踪,对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈那就是设置“断点”。见下图(图001)

―――用F8进行单步跟踪,在右边窗口寄存器(FUP)中的“ESP”突现“0012FFA4”时停下,在左下角“命令”栏中输入“DD 0012FFA4”回车;

―――如下图所示,鼠标点选“0012FFA4”行,打开右键如图操作,断点--硬件访问--WORD,F9运行;

―――直接来到这里,已经可以看到“009869C4 -E9 C119CAFF JMP TDXW.0062838A”这句了;F8跟踪;

选定位置F4”,然后继续F8往下走;(碰到往下的跳转,那么随它往下走;碰到没有实现的跳转,也不用理睬,继

续F8往下走。后面碰到类似的情况,处理方法一样。)

―――在此处可能要反复几次,最终一定要走到“009869C4”这一行;

―――跳转来到这里,就是程序真正的入口;

―――点击右键,按图示操作,最终生成一个已经脱壳的新文件。

===其后的操作,和第一集中的方法一样。

二、最快的捷径

1、用F8进行单步跟踪,对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈那就是设置“断点”。

在“00986839”处有一个往回的跳转,那么就要在其下面的“0098683B”处设置“断点”―――“运行到选定位置F4”;

2、直接按“CTRL+F”,输入“popad”查找;

3、直接来到“00833260 61 POPAD”,直接在该行设置“断点”―――“运行到选定位置F4”;

4、直接跳转到:

009869B7 8D4424 80 LEA EAX,DWORD PTR SS:[ESP-80]

009869BB 6A 00 PUSH 0

009869BD 39C4 CMP ESP,EAX

009869BF ^ 75 FA JNZ SHORT TdxW.009869BB

009869C1 83EC 80 SUB ESP,-80

009869C4 - E9 C119CAFF JMP TdxW.0062838A (程序的真正入口跳转)

009869C9 0000 ADD BYTE PTR DS:[EAX],AL

通达信主程序脱壳全记录(图文)第三集三、内存镜像法

ALT+M 打开内存,找到.rsrc,“设置访问中断F2”下断,F9运行,出现如下图示

相关文档
最新文档