MZD 5.6正式版以前的破解版本网上很多,本人只试过一次,觉得很垃圾。因为它加有三层壳,特别是加了老王的壳,
因为这个壳是通过注入壳的DLL到explorer里,严重影响explorer的安全,造成系统极不稳定,因此在WIN2003SP1上不
能稳定运行。其次,如果系统img是3G,那么每台机工作时的文件包(即fix文件)也是3G大小。如果有100台机,你算算要300G空间给它们用还不够!100台机同时读写300G文件,性能有多好呢?晕啊!!哈哈!MZD 5.6正式版带壳破解本人早就知道了,可以说是秒杀。只不过我没有公开在网上。因为我的朋友们没有一个人用。所以不在深研。MZD 5.6正式版加有二层壳,第一层是:
EncryptPE V2.2004.8.10-V2.2005.3.14 -> WFS * 第二层是:
ASProtect 1.2x - 1.3x [Registered] -> Alexey Solodovnikov (实际是 ASProtect v1.23 RC1 ) 前几天本人把它完美脱壳了。
这二层壳都没有脱壳机直接脱得了,所以只能手脱啊!补了35个区段10处自校验,总算搞好,真晕!破解就很简单了。"衣服"都给你脱光了,你想怎么样都可以了,哈哈!想要学破解方法的可以跟贴,本人慢慢地告诉你方法。附上已经脱壳的文件,你们想怎破它都非常容易了。靠壳来保护自己的软件实在是……,而且加的是“出名”的壳,研究它的人多如牛毛,你看
Mainsoft的软件有多少个有壳啊?普通人你想破它,没门!
脱壳详细过程在下面这个地址:
http://bbs.pediy.com/showthread.php?t=69311
在OD中载入已经脱壳的MZD.exe程序
.......
004FFD54 55 PUSH EBP 这里下F2断点
下断之后输入任意字符注册跟进,暴破也好,想完美注册也好,实在太简单。
......
004FFE83 83F8 04 CMP EAX,4 EAX=0 (注册成功)
......
【详细过程】
(一) 脱第一层壳:
在下面这句F2下断,然后F7跟进,按网上方法脱老王的壳。可参考fly的EncryptPE V2.2005.3.14试炼Service保护方式:
http://bbs.pediy.com/showthread.php?threadid=13726 这篇破文就可以了。
009C32C1 FFD3 CALL EBX
F7 跟进之后要下硬件执行断点。
711E4677 8D4D D8 lea ecx,dword ptr ss:[ebp-28] 这里下硬件执行断点
.......
711E4687 837D D8 00 cmp dword ptr ss:[ebp-28],0 这里下硬件执行断点
就获得加壳前文件的PE头、OEP等信息了。
.......
其它的略过。
(二) 脱第二层壳过程:
(1) 利用脚本处理IAT,到达Stolen OEP'Start
00401000 > 68 01A09200 PUSH MZD.0092A001 ; OD入口处
00401005 E8 01000000 CALL MZD.0040100B
0040100A C3 RETN
0040100B C3 RETN
0040100C F659 47 NEG BYTE PTR DS:[ECX+47]
0040100F 51 PUSH ECX
运行Volx大侠的Aspr2.XX_IATfixer_v2.2s.osc脱壳脚本停在伪OEP了。
02510225 55 PUSH EBP ; 000520824
02510226 BD D6FD4800 MOV EBP,48FDD6
0251022B 83CD C7 OR EBP,FFFFFFC7
0251022E C1C5 3F ROL EBP,3F ; 移位常量超出 1..31 的范围
02510231 036C24 18 ADD EBP,DWORD PTR SS:[ESP+18]
02510235 8D6C24 5F LEA EBP,DWORD PTR SS:[ESP+5F]
02510239 8D6C25 A1 LEA EBP,DWORD PTR SS:[EBP-5F]
0251023D E9 D4010000 JMP 02510416
Alt+l, 查看硬件断点1位于0135E834。
iatstartaddr: 00834294
iatstart_rva: 00434294
iatsize: 00000958
02510225 断点位于 02510225
OEP_rva: 00120824
OEP=000520824-400000=00120824
RVA=00834294-400000=00434294
现在用LordPE完全脱壳出数据,Address=00400000、Size=005C2000,存为dumped.exe
运行ImportRec,填入RVA=00434294、Size=00000958,获取输入表,函数都是有效的。修改OEP RVA=00120824修复dumped.exe保存为
MZD.exe
(2) 手动修复stolen code,采用补区段的方法很适合我们菜鸟,用lordpe区域转存,dump出程序中stolen code和VM区段,如果不清楚那些是
stolen code和VM区段,一看OEP部分在哪个区段,二看壳用到哪几个区段,不妨多dump些区段备用。下面是我找回偷窃代码区段的地址:
VM Address Size
===========================================================
01320000 54000 <-ASProtect 解密 CODE 区段
01380000 14000 <-ASProtect 资料 DATA 区段
02510000 2000 <-OEP Stolen Code
02670000 1000 <-Delphi DATA 区段
02680000 1000 <-Delphi DATA 区段
02690000 1000 <-Delphi DATA 区段
026B0000 1000 <-M01 Stolen Code
026C0000 1000 <-M02 Stolen Code
026D0000 1000 <-M03 Stolen Code
026E0000 1000 <-M04 Stolen Code
026F0000 1000 <-M05 Stolen Code
02700000 1000 <-M06 Stolen Code
02710000 1000 <-M07 Stolen Code
02720000 1000 <-M08 Stolen Code
02730000 1000 <-M09 Stolen Code
02740000 1000 <-M10 Stolen Code
02750000 1000 <-M11 Stolen Code
02760000 1000 <-M12 Stolen Code
02770000 1000 <-M13 Stolen Code
02780000 1000 <-M14 Stolen Code
02790000 1000 <-M15 Stolen Code
027A0000 1000 <-M16 Stolen Code
027B0000 1000 <-M17 Stolen Code
027C0000 1000 <-M18 Stolen Code
027D0000 1000 <-M19 Stolen Code
027E0000 1000 <-M20 Stolen Code
027F0000 1000 <-M21 Stolen Code
02800000 1000 <-M22 Stolen Code
02810000 1000 <-M23 Stolen Code
02820000 1000 <-M24 Stolen Code
02830000 1000 <-M25 Stolen Code
02840000 1000 <-M26 Stolen Code
02850000 1000 <-M27 Stolen Code
02860000 1000 <-M28 Stolen Code
02870000 1000 <-M29 Stolen Code
02880000 1000 <-M30 Stolen Code
02890000 1000 <-M31 Stolen Code
028A0000 1000 <-M32 Stolen Code
028B0000 1000 <-M33 Stolen Code
028C0000 1000 <-M34 Stolen Code
03710000 1000 <-M35 Stolen Code
===========================================================
这里提醒一下,把dump出的区段附加在MZD.exe后面时,所有VM Address要减去基址,如:
01320000-400000=F20000。
把dump出的区段附加完成后,用lordpe修复PE Header。
(3) 重新在OD中载入MZD.exe程序,开始处理壳的自校验。
Route CHECK,算是壳的自我校验。
01344CEF 8B73 30 MOV ESI,DWORD PTR DS:[EBX+30]
01344CF2 8B7B 14 MOV EDI,DWORD PTR DS:[EBX+14]
01344CF5 A1 D02B3601 MOV EAX,DWORD PTR DS:[1362BD0]
01344CFA 8B40 34 MOV EAX,DWORD PTR DS:[EAX+34] 从这里开始修改。
01344CFD FFD0 CALL EAX
01344CFF 2945 0C SUB DWORD PTR SS:[EBP+C],EAX
01344D02 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C]
01344D05 2B43 18 SUB EAX,DWORD PTR DS:[EBX+18]
01344D08 2B43 68 SUB EAX,DWORD PTR DS:[EBX+68]
01344D0B 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
二进制
90 90 8B 44 24 58 83 E8 05 90 90
修改后的代码,保存文件。
01344CEF 8B73 30 MOV ESI,DWORD PTR DS:[EBX+30]
01344CF2 8B7B 14 MOV EDI,DWORD PTR DS:[EBX+14]
01344CF5 A1 D02B3601 MOV EAX,DWORD PTR DS:[1362BD0]
01344CFA 90 NOP
01344CFB 90 NOP
01344CFC 8B4424 58 MOV EAX,DWORD PTR SS:[ESP+58]
01344D00 83E8 05 SUB EAX,5
01344D03 90 NOP
01344D04 90 NOP
01344D05 2B43 18 SUB EAX,DWORD PTR DS:[EBX+18]
01344D08 2B43 68 SUB EAX,DWORD PTR DS:[EBX+68]
01344D0B 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
(4) 处理文件 CRC 自校验
1. 004F805F 0BFF OR EDI,EDI
004F8061 0F84 21000000 JE MZD.004F8088 修改JE-->JMP
.....
004F8134 /0F84 8E040000 JE MZD.004F85C8 NOP
2. 004F8A7A 0BFF OR EDI,EDI
004F8A7C 0F84 1B000000 JE MZD.004F8A9D 修改JE-->JMP
.....
004F8B47 /0F84 70050000 JE MZD.004F90BD NOP
3. 004FA3CD 0BF6 OR ESI,ESI
004FA3CF 0F84 1D000000 JE MZD.004FA3F2 修改JE-->JMP
.....
004FA4A5 /75 09 JNZ MZD.004FA4B0 修改JNZ-->JMP
4. 004FC7D7 0BF6 OR ESI,ESI
004FC7D9 0F84 1C000000 JE MZD.004FC7FB 修改JE-->JMP
.....
004FC8A2 /0F84 F6040000 JE MZD.004FCD9E NOP
5. 004FCF3E 85FF TEST EDI,EDI
004FCF40 0F84 1F000000 JE MZD.004FCF65 修改JE-->JMP
.....
004FD006 /0F84 21010000 JE MZD.004FD12D NOP
6. 004FDD84 85F6 TEST ESI,ESI
004FDD86 0F84 1F000000 JE MZD.004FDDAB 修改JE-->JMP
.....
004FDE53 /74 4B JE MZD.004FDEA0 NOP
7. 004FEBBF 0BFF OR EDI,EDI
004FEBC1 0F84 19000000 JE MZD.004FEBE0 修改JE-->JMP
.....
004FEC8B /75 0A JNZ MZD.004FEC97 修改JNZ-->JMP
8. 00501127 0BF6 OR ESI,ESI
00501129 0F84 1A000000 JE MZD.00501149 修改JE-->JMP
.....
005011F8 /75 07 JNZ MZD.00501201 修改JNZ-->JMP
9. 005058F3 85F6 TEST ESI,ESI
005058F5 0F84 1D000000 JE MZD.00505918 修改JE-->JMP
.....
005059CA /0F84 C1010000 JE MZD.00505B91 NOP
10.00520899 0BF6 OR ESI,ESI
0052089B 0F84 18000000 JE MZD.005208B9 修改JE-->JMP
.....
00520975 /75 07 JNZ MZD.0052097E 修改JNZ-->JMP
F9,运行很畅快,脱壳过程算是结束了。