标 题: 【原创】内存优化大师破解手记
作 者: FlyingSnow
时 间: 2010-03-30,21:17:22
链 接: http://bbs.pediy.com/showthread.php?t=783628
下 载:http://www.onlinedown.net/soft/39779.htm
描 述:专业的内存优化软件.完全提升系统效率.
特色功能:
●采用和系统内核连接的优化核心,优化释放内存快捷简单.
●与传统排除到虚拟内存文件的内存优化完全区分.
●系统底层操作内存优化,优化后不影响程序运行及速度.
●优化后系统速度将明显提高,在系统任务管理器中可查看明显效果.
●全面支持Windows Server系统,单机与服务器均适用.
软件已通过英特尔软件认证!
真假不管,至少测试效果还算不错。
Peid查壳是Aspack 2.12,也没有什么附加数据,直接用aspackdie脱掉,保存为unpacked.exe。直接运行提示主程序被修改或破坏,说明有自校验。
OD载入之,运行,OD直接没了。
安装文件夹下有krnln.fnr文件,典型的非完全编译版易语言程序,调试比较烦。
首先去掉反调试。
OD重新载入,bp OpenProcess,断下两次(第一次断下在TrayIcon模块,直接跳过),Alt+F9返回至主模块,代码:
004D5AFB 3965 D0 CMP DWORD PTR SS:[EBP-30],ESP
004D5AFE 74 0D JE SHORT Unpacked.004D5B0D
004D5B00 68 06000000 PUSH 6
004D5B05 E8 87360000 CALL Unpacked.004D9191
004D5B0A 83C4 04 ADD ESP,4
004D5B0D 8945 DC MOV DWORD PTR SS:[EBP-24],EAX
004D5B10 837D 08 00 CMP DWORD PTR SS:[EBP+8],0
004D5B14 0F85 22000000 JNZ Unpacked.004D5B3C
004D5B1A 8965 D4 MOV DWORD PTR SS:[EBP-2C],ESP
004D5B1D FF75 DC PUSH DWORD PTR SS:[EBP-24]
004D5B20 B8 0E000000 MOV EAX,0E
004D5B25 E8 6D360000 CALL Unpacked.004D9197
004D5B2A 3965 D4 CMP DWORD PTR SS:[EBP-2C],ESP
004D5B2D 74 0D JE SHORT Unpacked.004D5B3C
004D5B2F 68 06000000 PUSH 6
004D5B34 E8 58360000 CALL Unpacked.004D9191
004D5B39 83C4 04 ADD ESP,4
004D5B3C E9 29000000 JMP Unpacked.004D5B6A
004D5B41 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
004D5B44 50 PUSH EAX
004D5B45 FF75 E4 PUSH DWORD PTR SS:[EBP-1C]
004D5B48 E8 5DC5FFFF CALL Unpacked.004D20AA
…………………………
004D5CAA /74 0F JE SHORT Unpacked.004D5CBB
004D5CAC |8B07 MOV EAX,DWORD PTR DS:[EDI]
004D5CAE |83C7 04 ADD EDI,4
004D5CB1 |49 DEC ECX
004D5CB2 |74 05 JE SHORT Unpacked.004D5CB9
004D5CB4 |0FAF07 IMUL EAX,DWORD PTR DS:[EDI]
004D5CB7 ^|EB F5 JMP SHORT Unpacked.004D5CAE
004D5CB9 |8BC8 MOV ECX,EAX
004D5CBB \81F9 04010000 CMP ECX,104
004D5CC1 7E 05 JLE SHORT Unpacked.004D5CC8
004D5CC3 B9 04010000 MOV ECX,104
004D5CC8 8BF3 MOV ESI,EBX
004D5CCA F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
004D5CCC 5F POP EDI
004D5CCD 5B POP EBX
004D5CCE 83C7 04 ADD EDI,4
004D5CD1 81C3 04010000 ADD EBX,104
004D5CD7 E8 91340000 CALL Unpacked.004D916D
004D5CDC 83C4 04 ADD ESP,4
004D5CDF 58 POP EAX
004D5CE0 8945 E8 MOV DWORD PTR SS:[EBP-18],EAX
004D5CE3 ^ E9 0AFCFFFF JMP Unpacked.004D58F2 //----长跳转
跟随长跳转来到
004D58F2 837D E8 00 CMP DWORD PTR SS:[EBP-18],0
004D58F6 0F84 EC030000 JE Unpacked.004D5CE8 //--必须跳
004D58FC 68 00000000 PUSH 0
004D5901 BB D4080000 MOV EBX,8D4
004D5906 E8 6E380000 CALL Unpacked.004D9179
004D590B 83C4 04 ADD ESP,4
004D590E 8945 D0 MOV DWORD PTR SS:[EBP-30],EAX
004D5911 837D D0 03 CMP DWORD PTR SS:[EBP-30],3
004D5915 0F85 31000000 JNZ Unpacked.004D594C
改成jmp,保存跳过反调试。
文件自校验:
重新载入程序,bp MessageBoxA,运行,断下。
0012FB08 10060006 /CALL 到 MessageBoxA 来自 krnln.10060000
0012FB0C 00000000 |hOwner = NULL
0012FB10 00277AD0 |Text = "主程序被修改或破坏!"
0012FB14 0023D538 |Title = "错误"
0012FB18 00002040 \Style = MB_OK|MB_ICONASTERISK|MB_TASKMODAL
连续Ctrl+F9返回一直到主模块。来到这里
004D4CE4 50 PUSH EAX
004D4CE5 68 03000000 PUSH 3
004D4CEA BB 00030000 MOV EBX,300
004D4CEF E8 85440000 CALL Unpacked.004D9179 //MessageBoxA
004D4CF4 83C4 28 ADD ESP,28
004D4CF7 8B5D F8 MOV EBX,DWORD PTR SS:[EBP-8]
004D4CFA 85DB TEST EBX,EBX
004D4CFC 74 09 JE SHORT Unpacked.004D4D07
004D4CFE 53 PUSH EBX
004D4CFF E8 69440000 CALL Unpacked.004D916D
004D4D04 83C4 04 ADD ESP,4
往上找,找到一个可以跳过这个消息框的地方
004D4C4F 85DB TEST EBX,EBX
004D4C51 74 09 JE SHORT Unpacked.004D4C5C
004D4C53 53 PUSH EBX
004D4C54 E8 14450000 CALL Unpacked.004D916D
004D4C59 83C4 04 ADD ESP,4
004D4C5C 817D F4 5034030>CMP DWORD PTR SS:[EBP-C],33450 //比较大小
004D4C63 0F8E B8000000 JLE Unpacked.004D4D21 //小于则跳
004D4C69 B8 EBF84A00 MOV EAX,Unpacked.004AF8EB ; ASCII "D6F7B3CCD0F2B1BBD0DEB8C4BBF2C6C6BBB521"
004D4C6E 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
004D4C71 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004D4C74 50 PUSH EAX
很显然是比较文件大小,强制跳过。
不过呢,我们来找找是不是有别的地方也有校验吧,这句33450很有代表性。
Ctrl+F直接搜索CMP DWORD PTR SS:[EBP-C],33450,果然又找到一处
004D70B1 83C4 04 ADD ESP,4
004D70B4 817D F4 5034030>CMP DWORD PTR SS:[EBP-C],33450 //这里
004D70BB 0F8E 09010000 JLE Unpacked.004D71CA //同上,过掉
004D70C1 B8 EBF84A00 MOV EAX,Unpacked.004AF8EB ; ASCII "D6F7B3CCD0F2B1BBD0DEB8C4BBF2C6C6BBB521"
004D70C6 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
把两处都patch掉后校验就去掉了。
注册:
这个程序属于重启验证,把注册码以十六进制ASCII方式放在reg.dat文件中。
顺便说一句,如果没有去掉上面提到的第二个大小校验的话,在输入注册码的时候就会提示错误并自动删除main.dat文件,这下就只能重装这个软件了。
重新载入程序,bp CreateFileW,一直F9直到程序读取reg.dat。返回到程序领空
004D6425 B8 11334000 MOV EAX,Unpacked.00403311
004D642A 50 PUSH EAX
004D642B 68 01000000 PUSH 1
004D6430 BB 68020000 MOV EBX,268
004D6435 E8 3F2D0000 CALL Unpacked.004D9179 //打开文件
004D643A 83C4 10 ADD ESP,10 //返回到这里
004D643D 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
004D6440 8B5D F4 MOV EBX,DWORD PTR SS:[EBP-C]
004D6443 85DB TEST EBX,EBX
004D6445 74 09 JE SHORT Unpacked.004D6450
004D6447 53 PUSH EBX
004D6448 E8 202D0000 CALL Unpacked.004D916D
004D644D 83C4 04 ADD ESP,4
004D6450 68 01030080 PUSH 80000301
004D6455 6A 00 PUSH 0
004D6457 68 0A000000 PUSH 0A
004D645C 68 05000080 PUSH 80000005
004D6461 6A 00 PUSH 0
004D6463 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
004D6466 85C0 TEST EAX,EAX
004D6468 75 05 JNZ SHORT Unpacked.004D646F
004D646A B8 32F44A00 MOV EAX,Unpacked.004AF432
004D646F 50 PUSH EAX
004D6470 68 02000000 PUSH 2
004D6475 BB 9C010000 MOV EBX,19C
004D647A E8 FA2C0000 CALL Unpacked.004D9179 ; //读取了注册码,16进制形式
004D647F 83C4 1C ADD ESP,1C
004D6482 8945 E4 MOV DWORD PTR SS:[EBP-1C],EAX
004D6485 8955 E8 MOV DWORD PTR SS:[EBP-18],EDX
004D6488 894D EC MOV DWORD PTR SS:[EBP-14],ECX
004D648B 8B5D F0 MOV EBX,DWORD PTR SS:[EBP-10]
004D648E 85DB TEST EBX,EBX
004D6490 74 09 JE SHORT Unpacked.004D649B
004D6492 53 PUSH EBX
004D6493 E8 D52C0000 CALL Unpacked.004D916D
004D6498 83C4 04 ADD ESP,4
004D649B 8B4D EC MOV ECX,DWORD PTR SS:[EBP-14]
004D649E 81F9 04000080 CMP ECX,80000004
004D64A4 74 0D JE SHORT Unpacked.004D64B3
004D64A6 68 05000000 PUSH 5
004D64AB E8 E12C0000 CALL Unpacked.004D9191
004D64B0 83C4 04 ADD ESP,4
004D64B3 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
004D64B6 50 PUSH EAX
004D64B7 E8 69BFFFFF CALL Unpacked.004D2425 ; //转换为ASCII形式
004D64BC 8945 E0 MOV DWORD PTR SS:[EBP-20],EAX
004D64BF 8B5D E4 MOV EBX,DWORD PTR SS:[EBP-1C]
004D64C2 85DB TEST EBX,EBX
004D64C4 74 09 JE SHORT Unpacked.004D64CF
004D64C6 53 PUSH EBX
004D64C7 E8 A12C0000 CALL Unpacked.004D916D
004D64CC 83C4 04 ADD ESP,4
004D64CF 8B1D F0043C01 MOV EBX,DWORD PTR DS:[13C04F0]
004D64D5 85DB TEST EBX,EBX
004D64D7 74 09 JE SHORT Unpacked.004D64E2
004D64D9 53 PUSH EBX
004D64DA E8 8E2C0000 CALL Unpacked.004D916D
004D64DF 83C4 04 ADD ESP,4
004D64E2 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20]
004D64E5 A3 F0043C01 MOV DWORD PTR DS:[13C04F0],EAX
004D64EA 68 04000080 PUSH 80000004
004D64EF 6A 00 PUSH 0
004D64F1 A1 F0043C01 MOV EAX,DWORD PTR DS:[13C04F0]
004D64F6 85C0 TEST EAX,EAX
004D64F8 75 05 JNZ SHORT Unpacked.004D64FF
004D64FA B8 11334000 MOV EAX,Unpacked.00403311
004D64FF 50 PUSH EAX
004D6500 68 01000000 PUSH 1
004D6505 BB 64010000 MOV EBX,164
004D650A E8 6A2C0000 CALL Unpacked.004D9179
004D650F 83C4 10 ADD ESP,10
004D6512 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
004D6515 8955 FC MOV DWORD PTR SS:[EBP-4],EDX
004D6518 68 04000080 PUSH 80000004
004D651D 6A 00 PUSH 0
004D651F A1 E8043C01 MOV EAX,DWORD PTR DS:[13C04E8]
004D6524 85C0 TEST EAX,EAX
004D6526 75 05 JNZ SHORT Unpacked.004D652D
004D6528 B8 11334000 MOV EAX,Unpacked.00403311
004D652D 50 PUSH EAX
004D652E 68 01000000 PUSH 1
004D6533 BB 64010000 MOV EBX,164 ; 这里已经可以看到机器码了
004D6538 E8 3C2C0000 CALL Unpacked.004D9179
004D653D 83C4 10 ADD ESP,10
004D6540 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
004D6543 8955 F4 MOV DWORD PTR SS:[EBP-C],EDX
004D6546 DD45 F0 FLD QWORD PTR SS:[EBP-10]
004D6549 DC0D 82F94A00 FMUL QWORD PTR DS:[4AF982]
004D654F DD5D E8 FSTP QWORD PTR SS:[EBP-18]
004D6552 DD45 E8 FLD QWORD PTR SS:[EBP-18]
004D6555 DC35 50F44A00 FDIV QWORD PTR DS:[4AF450]
004D655B DD5D E0 FSTP QWORD PTR SS:[EBP-20]
004D655E DD45 E0 FLD QWORD PTR SS:[EBP-20]
004D6561 DC0D 8AF94A00 FMUL QWORD PTR DS:[4AF98A]
004D6567 DD5D D8 FSTP QWORD PTR SS:[EBP-28]
004D656A 68 01060080 PUSH 80000601
004D656F FF75 DC PUSH DWORD PTR SS:[EBP-24]
004D6572 FF75 D8 PUSH DWORD PTR SS:[EBP-28]
004D6575 68 01000000 PUSH 1
004D657A BB 60000000 MOV EBX,60
004D657F E8 F52B0000 CALL Unpacked.004D9179
004D6584 83C4 10 ADD ESP,10
004D6587 8945 CC MOV DWORD PTR SS:[EBP-34],EAX
004D658A DB45 CC FILD DWORD PTR SS:[EBP-34]
004D658D DD5D CC FSTP QWORD PTR SS:[EBP-34]
004D6590 DD45 F8 FLD QWORD PTR SS:[EBP-8]
004D6593 DC65 CC FSUB QWORD PTR SS:[EBP-34]
004D6596 D9E4 FTST
004D6598 DFE0 FSTSW AX
004D659A F6C4 01 TEST AH,1
004D659D 74 02 JE SHORT Unpacked.004D65A1
004D659F D9E0 FCHS
004D65A1 DC1D 92F94A00 FCOMP QWORD PTR DS:[4AF992]
004D65A7 DFE0 FSTSW AX
004D65A9 F6C4 41 TEST AH,41
004D65AC 0F84 CD000000 JE Unpacked.004D667F ; 关键跳转
004D65B2 C705 EC043C01 0>MOV DWORD PTR DS:[13C04EC],1
中间的浮点指令看不懂
偷懒办法直接把下面的je nop掉,就是注册版啦
有能力就追注册码吧,呵呵
保存,现在就是注册版啦。
[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!