TA的每日心情 | 衰 2016-3-10 10:33 |
---|
签到天数: 14 天 [LV.3]偶尔看看II
管理员
- 积分
- 804
|
板凳
楼主 |
发表于 2014-5-9 15:06:40
|
只看该作者
脱壳教程2:手动脱壳入门第一篇
【使用工具】 Ollydbg1.10b,ImportREC1.6F
【破解平台】 Win2000/XP
前言,作者写这篇文章只是举个例子,希望读者能够举一反三,看清思路.
本论坛中破解高手很多,不会手动脱壳者人数仍然不少。有人会说,我有Unaspack,Caspr,ProcDump等众多脱壳工具,不会手动脱壳用工具脱就可以了。但有部分壳如Asprotect1.23Rc4,本论坛高手仙剑(将自己加密壳伪装成C++),有漏洞,用Peid查壳,Ep区段写有Xj,用Od载入提示有壳,更有甚一些软件如大嘴日语加了四层壳,这些都是工具无法脱壳的。随着加密壳的不断出现,基本壳都不会,高版本的加密壳以后脱壳盲根本无从入手。所以,手动脱壳Crack必修。
手动脱壳的主要步骤是:寻找入口点,转储(dump)程序,修复引入函数表(Import Table)
现在的壳分压缩壳,和加密壳。压缩壳目的是使文件大小变小,便于在网上传播。并有一定的保护作用,你无法反汇编加壳程序。加密壳目的是用各种手段保护软件不被脱壳,跟踪,文件大小不是它的目的,有的甚至变大。
判断加密壳压缩壳和普通程序分别很容易,用Ollydbg载入程序。
没加壳软件无任何提示。
加密壳有些Od载入时会提示压缩,基本上F9运行后,OD提示程序异常。
普通加壳Od载入时一般都会发现,提示软件被加壳,是否继续分析。
还有些是脱壳没有脱干净,Od载入时也提示加壳。
更猛的壳用Od载入就异常,如Acprotect。
关于壳的知识不是一两篇文章就能说清,要经过大量的各种壳的脱壳经验,参考文章。
好,我们先从一个基本的Upx壳入手。
本地下载
首先必须的工具要准备好,
查壳工具
Peid0.91,Fileinfo,Language2000,File Scanner等。
查入口工具。
Peid0.91首推,冲击波(9X)系统专用,Asloader,自己的感觉,程序跨段跳跃点。
脱壳工具。
Ollydbg首选,LoadPe,PEditor,ProcDump等,够用了。
修复引入函数表(Import Table)工具。
Imprec,File Scanner,PEditor,LoadPe,ProcDump,Revirgin等,够用了。
以上的工具都有当然最好,至少得有。
Peid0.91,Fileinfo,PEditor,LoadPe,Imprec,Asloader。
工具准备好,开始小试验牛刀。
附件中壳为Fi测壳为Upx1.01,Peid这里测不出Upx的压缩版本。
手动脱壳建议大家用Ollydbg,工作平台Win2000,WinXp,Win9x不推荐。
手动脱壳时,用Olldbg载入程序,脱壳程序里面会有有好多循环。对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈。不要用Peid查入口,单步跟踪,提高手动找入口能力。
用OD载入程序后。
Od提示程序加壳,选不继续分析。
0046AC00 > 60 PUSHAD 停在这里,我们先记住UPX壳的加壳入口第一句是PUSHAD
出口暂时不清楚,为的是今后碰到多层壳有准备。
0046AC01 BE 00104400 MOV ESI,ex1.00441000
0046AC06 8DBE 0000FCFF LEA EDI,DWORD PTR DS:[ESI+FFFC0000]
0046AC0C C787 D0940500 D>MOV DWORD PTR DS:[EDI+594D0],10A125D8
0046AC16 57 PUSH EDI
0046AC17 83CD FF OR EBP,FFFFFFFF
0046AC1A EB 0E JMP SHORT ex1.0046AC2A 跳走
0046AC1C 90 NOP
0046AC1D 90 NOP
0046AC1E 90 NOP
0046AC1F 90 NOP
0046AC20 8A06 MOV AL,BYTE PTR DS:[ESI]
0046AC22 46 INC ESI
0046AC23 8807 MOV BYTE PTR DS:[EDI],AL
0046AC25 47 INC EDI
0046AC26 01DB ADD EBX,EBX
0046AC28 75 07 JNZ SHORT ex1.0046AC31
0046AC2A 8B1E MOV EBX,DWORD PTR DS:[ESI] 到这里。
0046AC2C 83EE FC SUB ESI,-4
0046AC2F 11DB ADC EBX,EBX
0046AC31 ^ 72 ED JB SHORT ex1.0046AC20 这里注意,往回跳。脱壳时记住只能让程序往前运行
0046AC33 B8 01000000 MOV EAX,1 在这里点一下,F4运行到这句继续。
0046AC38 01DB ADD EBX,EBX
0046AC3A 75 07 JNZ SHORT ex1.0046AC43 跳 |
|