题目:FLASH动画制作软件Jugglor v1.1b脱壳并找出注册码教程
软件来源:电脑爱好者2002光盘
软件介绍:这款来自美国人的软件填补FLASH v3.0-5.0所实现不了的效果与功能,向导模式制作FLASH动画,是闪客必备工具。
软件版权:共享软件,注册费$99。
破解工具:Trw,PEiD,Prodump
引子:今天上午刚刚写完了一篇关于电影编辑软件的教程,下午接着乘胜追击,又破解了一个Flash动画制作软件。马上写出教程来,希望对菜鸟有些启发吧。首先安装了这款软件,试用了几下功能,安装完毕提示注册,呆会就注册它。先拿PEID查看一下,结果是用Aspack2.00.1加壳了,但是我试图用Casper,Prodump和AspackDie等工具脱壳,Casper 提示不成功,因为由不明工具压缩的,用AspackDIE脱壳后的文件出现非法操作,经常这样的。用Prodump脱壳时卡壳,无法进行下去。只好自己尝试脱壳了。启动Trw,用它的加载器加载这个程序,然后用F8慢慢跟踪,代码如下,解释附后。
0167:0058A001 PUSHA //这是加壳后的程序的标志,从这里开始。
0167:0058A002 CALL 0058A542 //一般按F8跟入。
0167:0058A007 JMP SHORT 0058A051
*略去垃圾代码
0167:0058A051 MOV EBX,00442994
0167:0058A056 ADD EBX,EBP
0167:0058A058 SUB EBX,[EBP+004429C1]
0167:0058A05E CMP DWORD [EBP+004437C0],BYTE +00
0167:0058A065 MOV [EBP+004437C0],EBX
0167:0058A06B JNZ NEAR 0058A4A6
0167:0058A071 LEA EAX,[EBP+004437C8]
0167:0058A077 PUSH EAX
0167:0058A078 CALL NEAR [EBP+004438D4]
0167:0058A07E MOV [EBP+004437C4],EAX
0167:0058A084 MOV EDI,EAX
0167:0058A086 LEA EBX,[EBP+004437D5]
0167:0058A08C PUSH EBX
0167:0058A08D PUSH EAX
0167:0058A08E CALL NEAR [EBP+004438D0]
0167:0058A094 MOV [EBP+004429CD],EAX
0167:0058A09A LEA EBX,[EBP+004437E2]
0167:0058A0A0 PUSH EBX
0167:0058A0A1 PUSH EDI
0167:0058A0A2 CALL NEAR [EBP+004438D0]
0167:0058A0A8 MOV [EBP+004429D1],EAX
0167:0058A0AE LEA EAX,[EBP+00442B5E]
0167:0058A0B4 PUSH EAX
0167:0058A0B5 RET
*略去垃圾代码
0167:0058A1CA MOV EBX,[EBP+00442A52]
0167:0058A1D0 OR EBX,EBX
0167:0058A1D2 JZ 0058A1DE
*略去若干行代码
0167:0058A24B JNZ 0058A299
0167:0058A24D INC BYTE [EBP+004429C0]
0167:0058A253 MOV EDI,[ESI]
0167:0058A255 ADD EDI,[EBP+004437C0]
0167:0058A25B PUSH DWORD [EDI]
0167:0058A25D MOV BYTE [EDI],C3
0167:0058A260 CALL EDI //这里可以看到EDI内的地址是401000h,但是千万不要被迷惑,按F8继续往下走才行。真正地址不是从401000开始的。
0167:0058A262 POP DWORD [EDI]
0167:0058A264 PUSH EAX
0167:0058A265 PUSH ECX
0167:0058A266 PUSH ESI
0167:0058A267 PUSH EBX
0167:0058A268 MOV ECX,EAX
0167:0058A26A SUB ECX,BYTE +06
0167:0058A26D MOV ESI,[EBP+004429C5]
0167:0058A273 XOR EBX,EBX
0167:0058A275 OR ECX,ECX
0167:0058A277 JZ 0058A295
0167:0058A279 JS 0058A295
0167:0058A27B LODSB
0167:0058A27C CMP AL,E8
0167:0058A27E JZ 0058A288
0167:0058A280 CMP AL,E9
0167:0058A282 JZ 0058A288
0167:0058A284 INC EBX
0167:0058A285 DEC ECX
0167:0058A286 JMP SHORT 0058A275 //这种往低地址方向跳转的指令,可以把光标移到其后面一行,按F7键跳过。
0167:0058A288 SUB [ESI],EBX
0167:0058A28A ADD EBX,BYTE +05
0167:0058A28D ADD ESI,BYTE +04
0167:0058A290 SUB ECX,BYTE +05
0167:0058A293 JMP SHORT 0058A275 //此处同样处理。
0167:0058A295 POP EBX
*略去若干行
0167:0058A391 MOV EAX,[ESI+0C]
0167:0058A394 TEST EAX,EAX
0167:0058A396 JZ NEAR 0058A4A6
0167:0058A39C ADD EAX,EDX
0167:0058A39E MOV EBX,EAX
0167:0058A3A0 PUSH EAX
0167:0058A3A1 CALL NEAR [EBP+004438D4]
0167:0058A3A7 TEST EAX,EAX
0167:0058A3A9 JNZ 0058A3B2
0167:0058A3AB PUSH EBX
*中间略去若干行
0167:0058A44F MOV EBX,[EBP+0044299D]
0167:0058A455 MOV EDI,[EBX+3C]
0167:0058A458 MOV EDI,[EBX+EDI+78]
0167:0058A45C ADD EBX,[EBX+EDI+1C]
0167:0058A460 MOV EAX,[EBX+EDX]
0167:0058A463 ADD EAX,[EBP+0044299D]
0167:0058A469 POP EDI
0167:0058A46A JMP SHORT 0058A482
0167:0058A46C PUSH EDI
0167:0058A46D MOV EAX,[ESI+0C]
0167:0058A470 ADD EAX,[EBP+004437C0]
0167:0058A476 PUSH EAX
0167:0058A477 PUSH EBX
0167:0058A478 LEA EAX,[EBP+0044388C]
0167:0058A47E PUSH EAX
0167:0058A47F PUSH EDI
0167:0058A480 JMP SHORT 0058A4CD
0167:0058A482 MOV [EDI],EAX
0167:0058A484 ADD DWORD [EBP+004429A1],BYTE +04
0167:0058A48B JMP 0058A3C2
0167:0058A490 MOV [ESI],EAX
0167:0058A492 MOV [ESI+0C],EAX
0167:0058A495 MOV [ESI+10],EAX
0167:0058A498 ADD ESI,BYTE +14
0167:0058A49B MOV EDX,[EBP+004437C0]
0167:0058A4A1 JMP 0058A391 //这条指令向上跳转,用上面方法跳过。
0167:0058A4A6 MOV EAX,[EBP+00442A62]
0167:0058A4AC PUSH EAX
0167:0058A4AD ADD EAX,[EBP+004437C0]
0167:0058A4B3 POP EBX
0167:0058A4B4 OR EBX,EBX
0167:0058A4B6 MOV [EBP+00442E5C],EAX
0167:0058A4BC POPA
0167:0058A4BD JNZ 0058A4C7
0167:0058A4BF MOV EAX,01
0167:0058A4C4 RET 0C
0167:0058A4C7 PUSH DWORD 004EA814 //这里才是关键所在啦!入口点是004EA814
0167:0058A4CC RET //这里就是返回到真正的入口点执行程序了。
按F8跳到004EA814后,执行Suspend暂停,然后启动Prodump,右击列表,选择“Refresh list”,然后找到Jugglor程序名,右击,选择“Dump Full”,给文件起名,比如j.exe即可存盘。运行一下脱壳后的程序,非常成功,没有什么问题,可是用PEID一看,依然带壳,根本没有正确脱壳。
我只好用Pedump命令脱壳了。结果是脱壳正确,用PEID一看是DELPHI写的程序。
为了避免这篇文章太长,我删掉许多代码,这些代码需要用F10跟踪即可。另外,在另一篇内我把找注册码的过程描述了一下。请参考另一篇好了。祝你阅读愉快!学习进步!
qduwg
qduwg@163.com
完稿日期:2006年1月14日下午.
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课