软件破解有没有通用万能的脱壳的好工具?asprotect壳有什么工具可以脱掉?

软件破解有没有通用万能的脱壳的好工具?asprotect壳有什么工具可以脱掉?,第1张

(一).壳的概念

作者编好软件后,编译成exe可执行文件。 1.有一些版权信息需要保护起来,不想让别人随便改动,如作者的姓名等,即为了保护软件不被破解,通常都是采用加壳来进行保护。 2.需要把程序搞的小一点,从而方便使用。于是,需要用到一些软件,它们能将exe可执行文件压缩, 3.在黑客界给木马等软件加壳脱壳以躲避杀毒软件。

实现上述功能,这些软件称为加壳软件。

(二).加壳软件最常见的加壳软件ASPACK ,UPX,PEcompact 不常用的加壳软件WWPACK32;PE-PACK ;PETITE ;NEOLITE

(三).侦测壳和软件所用编写语言的软件,因为脱壳之前要查他的壳的类型。 1.侦测壳的软件fileinfo.exe 简称fi.exe(侦测壳的能力极强) 2.侦测壳和软件所用编写语言的软件language.exe(两个功能合为一体,很棒) 推荐language2000中文版(专门检测加壳类型) 3.软件常用编写语言Delphi,VisualBasic(VB)---最难破,VisualC(VC)

(四)脱壳软件。 软件加壳是作者写完软件后,为了保护自己的代码或维护软件产权等利益所常用到的手段。目前有很多加壳工具,当然有盾,自然就有矛,只要我们收集全常用脱壳工具,那就不怕他加壳了。软件脱壳有手动脱壳和自动脱壳之分,下面我们先介绍自动脱壳,因为手动脱壳需要运用汇编语言,要跟踪断点等,不适合初学者,但我们在后边将稍作介绍。

加壳一般属于软件加密,现在越来越多的软件经过压缩处理,给汉化带来许多不便,软件汉化爱好者也不得不学习掌握这种技能。现在脱壳一般分手动和自动两种,手动就是用TRW2000、TR、SOFTICE等调试工具对付,对脱壳者有一定水平要求,涉及到很多汇编语言和软件调试方面的知识。而自动就是用专门的脱壳工具来脱,最常用某种压缩软件都有他人写的反压缩工具对应,有些压缩工具自身能解压,如UPX;有些不提供这功能,如:ASPACK,就需要UNASPACK对付,好处是简单,缺点是版本更新了就没用了。另外脱壳就是用专门的脱壳工具来对付,最流行的是PROCDUMP v1.62 ,可对付目前各种压缩软件的压缩档。在这里介绍的是一些通用的方法和工具,希望对大家有帮助。我们知道文件的加密方式,就可以使用不同的工具、不同的方法进行脱壳。下面是我们常常会碰到的加壳方式及简单的脱壳措施,供大家参考: 脱壳的基本原则就是单步跟踪,只能往前,不能往后。脱壳的一般流程是:查壳->寻找OEP->Dump->修复 找OEP的一般思路如下: 先看壳是加密壳还是压缩壳,压缩壳相对来说容易些,一般是没有异常,找到对应的popad后就能到入口,跳到入口的方式一般为。 我们知道文件被一些压缩加壳软件加密,下一步我们就要分析加密软件的名称、版本。因为不同软件甚至不同版本加的壳,脱壳处理的方法都不相同。

常用脱壳工具: 1、文件分析工具(侦测壳的类型):Fi,GetTyp,peid,pe-scan, 2、OEP入口查找工具:SoftICE,TRW,ollydbg,loader,peid 3、dump工具:IceDump,TRW,PEditor,ProcDump32,LordPE 4、PE文件编辑工具:PEditor,ProcDump32,LordPE 5、重建Import Table工具:ImportREC,ReVirgin 6、ASProtect脱壳专用工具:Caspr(ASPr V1.1-V1.2有效),Rad(只对ASPr V1.1有效),loader,peid

(1)Aspack: 用的最多,但只要用UNASPACK或PEDUMP32脱壳就行了 (2)ASProtect+aspack: 次之,国外的软件多用它加壳,脱壳时需要用到SOFTICE+ICEDUMP,需要一定的专业知识,但最新版现在暂时没有办法。 (3)Upx: 可以用UPX本身来脱壳,但要注意版本是否一致,用-D 参数 (4)Armadill: 可以用SOFTICE+ICEDUMP脱壳,比较烦 (5)Dbpe: 国内比较好的加密软件,新版本暂时不能脱,但可以破解 (6)NeoLite: 可以用自己来脱壳 (7)Pcguard: 可以用SOFTICE+ICEDUMP+FROGICE来脱壳 (8)Pecompat: 用SOFTICE配合PEDUMP32来脱壳,但不要专业知识 (9)Petite: 有一部分的老版本可以用PEDUMP32直接脱壳,新版本脱壳时需要用到SOFTICE+ICEDUMP,需要一定的专业知识 (10)WWpack32: 和PECOMPACT一样其实有一部分的老版本可以用PEDUMP32直接脱壳,不过有时候资源无法修改,也就无法汉化,所以最好还是用SOFTICE配合 PEDUMP32脱壳 我们通常都会使用Procdump32这个通用脱壳软件,它是一个强大的脱壳软件,他可以解开绝大部分的加密外壳,还有脚本功能可以使用脚本轻松解开特定外壳的加密文件。

另外很多时候我们要用到exe可执行文件编辑软件ultraedit。我们可以下载它的汉化注册版本,它的注册机可从网上搜到。ultraedit打开一个中文软件,若加壳,许多汉字不能被认出 ultraedit打开一个中文软件,若未加壳或已经脱壳,许多汉字能被认出 ultraedit可用来检验壳是否脱掉,以后它的用处还很多,请熟练掌握例如,可用它的替换功能替换作者的姓名为你的姓名注意字节必须相等,两个汉字替两个,三个替三个,不足处在ultraedit编辑器左边用00补

00401000 c>68 01D0DE00 push ccproje.00DED001 OD入口处

00401005 E8 01000000 call ccproje.0040100B

0040100A C3 retn

0040100B C3 retn

0040100C 2B02 sub eax,dword ptr ds:[edx]

0040100E 37 aaa

0040100F 8D77 F6 lea esi,dword ptr ds:[edi-A]

00401012 - E1 E8 loopde short ccproje.00400FFC

-------------------------------------------------------------------------------------------------

Aspr2.XX_IATfixer脚本停在OEP了。

016C039C E8 5FFC0600 call 01730000 OEP=00040190C

016C03A1 50 push eax

016C03A2 E9 3B060000 jmp 016C09E2

016C03A7 68 85056C01 push 16C0585

016C03AC E8 4FFC0600 call 01730000

016C03B1 52 push edx

016C03B2 E9 98000000 jmp 016C044F

016C03B7 43 inc ebx

016C03B8 E9 5B010000 jmp 016C0518

016C03BD F2: prefix repne:

016C03BE EB 01 jmp short 016C03C1

016C03C0 F0:83C4 08 lock add esp,8 不允许锁定前缀

Alt+l,查看硬件断点1位于014FCCB4。

IATstartaddr:00A4115C

IATsize:11F8

OEP=016C039C-400000=012C039C

RVA=00A4115C-400000=0064115C

Volx大侠的脚本已经解决了Asprotect SKE 2.x壳的诸多问题,手动修复stolen code,确实很完美,但本人功底太浅,OEP的前面部分基本还能蒙上,后来就陷在壳里了,还跳不出来,还是等修炼N段时间再尝试吧。

SYSCOM大侠的教程,采用补区段的方法很适合我们菜鸟,用lordpe区域转存,dump出程序中stolen code和VM区段,如果不清楚那些是stolen code和VM区段,一看OEP部分在哪个区段,二看壳用到哪几个区段,不妨多dump些区段备用。

VM Address Size

===========================================================

014D0000 47000 <-ASProtect 解密 CODE 区段

01520000 14000 <-ASProtect 资料 DATA 区段

016C0000 2000 <-OEP Stolen Code

016D0000 2000 <-M1 Stolen Code

016E0000 2000 <-M1 Stolen Code

016F0000 1000 <-M2 Stolen Code

01700000 1000 <-M2 Stolen Code

01710000 1000 <-M2 Stolen Code

01720000 1000 <-M3 Stolen Code

01730000 1000 <-M3 Stolen Code

01740000 1000 <-M3 Stolen Code

===========================================================

这里提醒一下,把dump出的区段附加在dumped_后面时,所有VM Address要减去基址,如:

014D0000-400000=10D0000。

把dump出的区段附加完成后,用lordpe修复PE Header。

重新在OD中载入程序,开始处理壳的自校验。

=================================================================================================

===处理壳自校验===

感谢SYSCOM大侠的教程,他是这样描述:

//////////////////////////////////////////////////////////////////////////////////////////////

Route CHECK,算是壳的自我检查,它是由 A,B 两数值,作互减运算。

A=GetCurrentThreadID

B=CALL Route Address

运算后 ...

B=B-A

当你脱壳之后,B=会发生错误 ERROR 111 ,所以我们只要,抓出正确的 CALL Route Address,就可以通过 CHECK SUM ,也就是在 [ESP+58],的 STACK 位址。所以我们使用

MOV EAX,[ESP+58] ,来还原 B 值 +5 后修正 B 值 Address

9F70CE-MOV EAX,[EAX+34]

9F70D1-CALL EAX =>GetCurrentThreadID

9FD0D3-SUB [EBP+C],EAX =>B=B-A

9FD0D6-MOV EAX,[ENP+C]

//////////////////////////////////////////////////////////////////////////////////////////////

014F8A58 /EB 01 jmp short dumped_1.014F8A5B ①↓014F8A5B

014F8A5A |698B 73308B7B 14A1>imul ecx,dword ptr ds:[ebx+7B8B3073],37>

014F8A64 50 push eax

014F8A65 018B 4034FFD0 add dword ptr ds:[ebx+D0FF3440],ecx

014F8A6B 2945 0C sub dword ptr ss:[ebp+C],eax

014F8A6B 2945 0C sub dword ptr ss:[ebp+C],eax

014F8A6E 8B45 0C mov eax,dword ptr ss:[ebp+C]

014F8A71 2B43 18 sub eax,dword ptr ds:[ebx+18]

014F8A74 2B43 68 sub eax,dword ptr ds:[ebx+68]

014F8A77 8945 FC mov dword ptr ss:[ebp-4],eax

014F8A7A 8D43 24 lea eax,dword ptr ds:[ebx+24]

014F8A7D 8945 F8 mov dword ptr ss:[ebp-8],eax

014F8A80 85FF test edi,edi

014F8A82 76 38 jbe short dumped_1.014F8ABC

014F8A84 EB 01 jmp short dumped_1.014F8A87

014F8A86 C7 ??? 未知命令

014F8A87 8B45 F8 mov eax,dword ptr ss:[ebp-8]

014F8A8A 0FB600 movzx eax,byte ptr ds:[eax]

014F8A8D 8B5483 40 mov edx,dword ptr ds:[ebx+eax*4+40]

014F8A91 8BC6 mov eax,esi

014F8A93 FFD2 call edx

014F8A95 3B45 FC cmp eax,dword ptr ss:[ebp-4]

014F8A98 75 1A jnz short dumped_1.014F8AB4

014F8A9A 8B45 10 mov eax,dword ptr ss:[ebp+10]

014F8A9D 50 push eax

014F8A9E 8B45 14 mov eax,dword ptr ss:[ebp+14]

014F8AA1 50 push eax

014F8AA2 E8 19FAFFFF call dumped_1.014F84C0

014F8AA7 50 push eax

014F8AA8 8BCE mov ecx,esi

014F8AAA 8B55 18 mov edx,dword ptr ss:[ebp+18]

014F8AAD 8BC3 mov eax,ebx

014F8AAF E8 D4FDFFFF call dumped_1.014F8888

014F8AB4 4F dec edi

014F8AB5 0373 6C add esi,dword ptr ds:[ebx+6C]

014F8AB8 85FF test edi,edi

014F8ABA ^ 77 CB ja short dumped_1.014F8A87

014F8ABC 68 D88A4F01 push dumped_1.014F8AD8 ASCII "111"

014F8AC1 E8 66C3FEFF call dumped_1.014E4E2C

由014F8A58跳到这里。

014F8A5B 8B73 30 mov esi,dword ptr ds:[ebx+30] dumped_1.016C10F9

014F8A5E 8B7B 14 mov edi,dword ptr ds:[ebx+14]

014F8A61 A1 F0375001 mov eax,dword ptr ds:[15037F0]

014F8A66 8B40 34 mov eax,dword ptr ds:[eax+34] 从这里开始修改。

014F8A69 FFD0 call eax

014F8A6B 2945 0C sub dword ptr ss:[ebp+C],eax

014F8A6E 8B45 0C mov eax,dword ptr ss:[ebp+C]

014F8A71 2B43 18 sub eax,dword ptr ds:[ebx+18]

014F8A74 2B43 68 sub eax,dword ptr ds:[ebx+68]

014F8A77 8945 FC mov dword ptr ss:[ebp-4],eax

二进制

90 90 8B 44 24 58 83 E8 05 90 90

修改后的代码,保存文件。

014F8A5B 8B73 30 mov esi,dword ptr ds:[ebx+30] dumped_1.016C10F9

014F8A5E 8B7B 14 mov edi,dword ptr ds:[ebx+14]

014F8A61 A1 F0375001 mov eax,dword ptr ds:[15037F0]

014F8A66 90 nop

014F8A67 90 nop

014F8A68 8B4424 58 mov eax,dword ptr ss:[esp+58]

014F8A6C 83E8 05 sub eax,5

014F8A6F 90 nop

014F8A70 90 nop

014F8A71 2B43 18 sub eax,dword ptr ds:[ebx+18]

014F8A74 2B43 68 sub eax,dword ptr ds:[ebx+68]

014F8A77 8945 FC mov dword ptr ss:[ebp-4],eax

F9,开始运行,软件界面一闪后,程序退出了,看来还有自校验。

================================================================================================

===处理文件自校验===

重新加载程序,下断点 BP GetFileSize。

F9大约8次,注意程序返回到本地领空,F8步进。

===================================================================

0012FA50 005BD602 /CALL 到 GetFileSize 来自 dumped_1.005BD5FD

0012FA54 000001B0 |hFile = 000001B0 (window)

0012FA58 00000000 \pFileSizeHigh = NULL

===================================================================

断在这里。

7C810C8F k>8BFF mov edi,edi

7C810C91 55 push ebp

7C810C92 8BEC mov ebp,esp

7C810C94 51 push ecx

7C810C95 51 push ecx

7C810C96 8D45 F8 lea eax,dword ptr ss:[ebp-8]

7C810C99 50 push eax

7C810C9A FF75 08 push dword ptr ss:[ebp+8]

7C810C9D E8 7FFFFFFF call kernel32.GetFileSizeEx

7C810CA2 85C0 test eax,eax

7C810CA4 ^ 0F84 EA8FFFFF je kernel32.7C809C94

继续跟踪,来到这里,修改0040B43E。

0040B437 E8 5C211B00 call dumped_1.005BD598

0040B43C 84C0 test al,al

0040B43E 75 5E jnz short dumped_1.0040B49E 修改jnz-->jmp

0040B440 33DB xor ebx,ebx

0040B442 EB 4C jmp short dumped_1.0040B490

0040B444 8BD3 mov edx,ebx

0040B446 A1 F879A300 mov eax,dword ptr ds:[_mainform]

0040B44B E8 18B54000 call dumped_1.00816968

0040B450 8B15 14227500 mov edx,dword ptr ds:[752214] umped_1.Tbx::TTBXItem::

0040B456 E8 6D894A00 call dumped_1.008B3DC8

0040B45B 85C0 test eax,eax

0040B45D 74 30 je short dumped_1.0040B48F

0040B45F 8BD3 mov edx,ebx

0040B461 A1 F879A300 mov eax,dword ptr ds:[_mainform]

0040B466 E8 FDB44000 call dumped_1.00816968

0040B46B 8B15 14227500 mov edx,dword ptr ds:[752214] umped_1.Tbx::TTBXItem::

0040B471 E8 52894A00 call dumped_1.008B3DC8

F9,运行很畅快,脱壳过程算是结束了。

我的破解过程,发表过多次了。哪里不明白在觅我

还是推荐你用PEID 0.95版的查壳率很高我现在就在用还不错你用的好像是....抱歉哈 忘了 应该是看什么百度文库之类的文章的吧要是aspack的话就要简单些要是asprotect的话就有点麻烦了我刚学只能脱aspack祝你好运哈


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11526976.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存