kongfoo 兄弟的 CoolCryptor V0.9 脱壳
直接下载:点击下载(或鼠标右键另存为)
软件大小: 38 KB
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
【调试环境】:WinXP、flyODBG 1.10B修改版、PEiD、LordPE、ImportREC
—————————————————————————————————
【脱壳过程】:
“几多天真的思想,几多找到是颓丧,沉默去迎失望,几多心中创伤”
——呵呵,经过 kongfoo 兄弟几多辛苦的努力,COOLcryptor升级至V0.9了。花指令繁多;其反跟踪方面已经比一般的保护壳更强了;其双进程方式则是除Armadillo之外所仅见的,虽然COOLcryptor的双进程还不具备更多的功能,但是kongfoo擅于溶和、吸收其它壳优点的能力已经让人佩服了!
再提几点建议吧:
1、COOLcryptor自身的兼容性。如今COOLcryptor只是For XP,以发展的眼光来看,一款优秀的壳最好能够顺利的跨平台运行,至少能够在目前流行的各WinDows平台上都能够运行。现在的COOLcryptor V0.9在Win XP的中文目录下也无法运行起来。这是COOLcryptor所必须解决的问题,否则随着COOLcryptor的不断升级,想纠正就会花费更多的精力了。
2、COOLcryptor加壳后被保护程序的兼容性。COOLcryptor加壳后的一些程序在XP上也无法运行了,如果这样下去,COOLcryptor只是成为一个自身的UnPackMe,而无法成为一款优秀的壳。
3、IAT处理,代码变形等方面还要继续变态,呵呵,对于壳来说,越变态越好啦。 8)
原来这个笔记应由kitty兄弟来写的,既然兄弟客气,我就来简单写一下吧,希望大家多多写作脱壳笔记,呵呵
OK,说了一堆废话,下面就以今天刚发布的COOLcryptor0.9.exe来脱壳演示一下。
—————————————————————————————————
设置Ollydbg忽略所有其它选项。用IsDebug 1.4插件去掉调试器标志。
一、反 反跟踪
1、去掉 lock cmpxchg
00408060 E8 03000000 call COOLcryp.00408068//进入OD后停在这
00408065 E9 EB07FF04 jmp 053F8855
Ctrl+B搜索2进制字符:F00FC7C8 在00408181处,下断
00408181 F0:0FC7C8 lock cmpxchg8b eax; 非法使用寄存器
00408185 83AD D5214000 04 sub dword ptr ss:[ebp+4021D5],4//[ebp+4021D5]=324C
0040818C 79 F3 jns short COOLcryp.00408181
0040818E 64:8F05 00000000 pop dword ptr fs:[0]
00408195 83C4 04 add esp,4//此处下断,F9 断在这!
00408198 EB 51 jmp short COOLcryp.004081EB
00408181处利用EXECryptor的lock cmpxchg8b异常解码。用修改的Ollydbg 1.10B版调试,增加忽略C000001E异常,在00408195处下断,F9运行,异常解码完毕后就停在00408195了。
当然,可以不管lock cmpxchg8b这个异常解码,直接开始第2步。
—————————————————————————————————
2、进程比较 BP GetModuleFileNameA+3
00409524 FF95 3D5B4000 call dword ptr ss:[ebp+405B3D]; kernel32.GetModuleFileNameA
0040952A 8BC7 mov eax,edi//中断后 Alt+F9 返回这里
0040952C 8038 60 cmp byte ptr ds:[eax],60
0040952F 72 03 jb short COOLcryp.00409534
00409531 8028 20 sub byte ptr ds:[eax],20
00409534 40 inc eax
00409535 8038 00 cmp byte ptr ds:[eax],0
00409538 75 F2 jnz short COOLcryp.0040952C
0040953A 8D85 9B574000 lea eax,dword ptr ss:[ebp+40579B]
00409540 8D9D B1594000 lea ebx,dword ptr ss:[ebp+4059B1]
00409546 33C9 xor ecx,ecx
00409548 8A1401 mov dl,byte ptr ds:[ecx+eax]
//修改:mov dl,byte ptr ds:[ecx+ebx] ★
0040954B 381419 cmp byte ptr ds:[ecx+ebx],dl
0040954E 75 0E jnz short COOLcryp.0040955E//跳就OVER了
00409550 41 inc ecx
00409551 81F9 03010000 cmp ecx,103
00409557 75 EF jnz short COOLcryp.00409548
00409559 E9 73070000 jmp COOLcryp.00409CD1
————————————————————————
3、大小比较 BP GetFileSize
00409F81 FF95 415B4000 call dword ptr ss:[ebp+405B41]; kernel32.CreateFileA
00409F87 8BD8 mov ebx,eax
00409F89 6A 00 push 0
00409F8B 50 push eax
00409F8C FF95 515B4000 call dword ptr ss:[ebp+405B51]; kernel32.GetFileSize
00409F92 8985 2F564000 mov dword ptr ss:[ebp+40562F],eax//中断后 Alt+F9 返回这里
00409F98 53 push ebx
00409F99 FF95 555B4000 call dword ptr ss:[ebp+405B55]; kernel32.CloseHandle
00409F9F 8D85 B1594000 lea eax,dword ptr ss:[ebp+4059B1]
00409FA5 6A 00 push 0
00409FA7 68 80000000 push 80
00409FAC 6A 03 push 3
00409FAE 6A 00 push 0
00409FB0 6A 01 push 1
00409FB2 68 00000080 push 80000000
00409FB7 50 push eax
00409FB8 FF95 415B4000 call dword ptr ss:[ebp+405B41]; kernel32.CreateFileA
00409FBE 8BD8 mov ebx,eax
00409FC0 6A 00 push 0
00409FC2 50 push eax
00409FC3 FF95 515B4000 call dword ptr ss:[ebp+405B51]; kernel32.GetFileSize
00409FC9 8BF8 mov edi,eax
00409FCB 53 push ebx
00409FCC FF95 555B4000 call dword ptr ss:[ebp+405B55]; kernel32.CloseHandle
00409FD2 33BD 2F564000 xor edi,dword ptr ss:[ebp+40562F]//修改:xor edi,edi ★
00409FD8 75 03 jnz short COOLcryp.00409FDD//跳就ExitProcess了
00409FDA 61 popad
00409FDB EB 20 jmp short COOLcryp.00409FFD
————————————————————————
4、还有一处 进程比较
Ctr+F 在当前位置搜索命令:cmp byte ptr ds:[ecx+ebx],dl 在0040A102处
0040A0F1 8D85 9B574000 lea eax,dword ptr ss:[ebp+40579B]
0040A0F7 8D9D B1594000 lea ebx,dword ptr ss:[ebp+4059B1]
0040A0FD 33C9 xor ecx,ecx
0040A0FF 8A1401 mov dl,byte ptr ds:[ecx+eax]
//修改:mov dl,byte ptr ds:[ecx+ebx] ★
0040A102 381419 cmp byte ptr ds:[ecx+ebx],dl
0040A105 75 0B jnz short COOLcryp.0040A112//跳就OVER了
0040A107 41 inc ecx
0040A108 81F9 04010000 cmp ecx,104
0040A10E 75 EF jnz short COOLcryp.0040A0FF
0040A110 EB 20 jmp short COOLcryp.0040A132
修改之后COOLcryptor的双进程就OVER啦 :-)
———————————————————————
5、MeltICE表 BP CreateFileA
0040B59E FF95 415B4000 call dword ptr ss:[ebp+405B41]; kernel32.CreateFileA
0040B5A4 40 inc eax//中断后 Alt+F9 返回这里
0040B5A5 75 0D jnz short COOLcryp.0040B5B4
0040B5A7 803E 00 cmp byte ptr ds:[esi],0
0040B5AA 74 DE je short COOLcryp.0040B58A
0040B5AC 46 inc esi
0040B5AD 803E FF cmp byte ptr ds:[esi],0FF
0040B5B0 75 F5 jnz short COOLcryp.0040B5A7
0040B5B2 EB 02 jmp short COOLcryp.0040B5B6
0040B5B4 61 popad
0040B5B5 C3 retn
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
MeltICE表
0040B466 5C 5C 2E 5C 53 49 43 45 00 5C 5C 2E 5C 4E 54 49 \.SICE.\.NTI
0040B476 43 45 00 5C 5C 2E 5C 4E 54 49 43 45 37 38 37 31 CE.\.NTICE7871
0040B486 00 5C 5C 2E 5C 4E 54 49 43 45 44 30 35 32 00 5C .\.NTICED052.
0040B496 5C 2E 5C 54 52 57 44 45 42 55 47 00 5C 5C 2E 5C .TRWDEBUG.\.
0040B4A6 54 52 57 00 5C 5C 2E 5C 54 52 57 32 30 30 30 00 TRW.\.TRW2000.
0040B4B6 5C 5C 2E 5C 53 55 50 45 52 42 50 4D 00 5C 5C 2E \.SUPERBPM.\.
0040B4C6 5C 49 43 45 44 55 4D 50 00 5C 5C 2E 5C 52 45 47 ICEDUMP.\.REG
0040B4D6 4D 4F 4E 00 5C 5C 2E 5C 46 49 4C 45 4D 4F 4E 00 MON.\.FILEMON.
0040B4E6 5C 5C 2E 5C 52 45 47 56 58 44 00 5C 5C 2E 5C 46 \.REGVXD.\.F
0040B4F6 49 4C 45 56 58 44 00 5C 5C 2E 5C 56 4B 45 59 50 ILEVXD.\.VKEYP
0040B506 52 4F 44 00 5C 5C 2E 5C 42 57 32 4B 00 5C 5C 2E ROD.\.BW2K.\.
0040B516 5C 53 49 57 44 45 42 55 47 00 5C 5C 2E 5C 53 49 SIWDEBUG.\.SI
0040B526 57 56 49 44 00 5C 5C 2E 5C 47 6C 6F 62 61 6C 5C WVID.\.Global
0040B536 46 49 4C 45 4D 4F 4E 00 5C 5C 2E 5C 47 6C 6F 62 FILEMON.\.Glob
0040B546 61 6C 5C 52 45 47 4D 4F 4E 00 5C 5C 2E 5C 46 49 alREGMON.\.FI
0040B556 4C 45 56 58 44 2E 56 58 44 00 5C 5C 2E 5C 52 45 LEVXD.VXD.\.RE
0040B566 47 56 58 44 2E 56 58 44 00 5C 5C 2E 5C 46 52 4F GVXD.VXD.\.FRO
0040B576 47 53 49 43 45 00 5C 5C 2E 5C 49 63 65 45 78 74 GSICE.\.IceExt
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
我用Ollydbg修改版调试,这里就没有威胁啦。 :-)
————————————————————————
6、时间监测 BP GetTickCount+5
COOLcryptor V0.9加了时间监测,要下BP GetTickCount+5,呵呵。Shift+F9走
0040A35F FF95 F15A4000 call dword ptr ss:[ebp+405AF1]; kernel32.77E5751F
0040A365 8985 1F564000 mov dword ptr ss:[ebp+40561F],eax//第1次返回
0040A5B7 FF95 F15A4000 call dword ptr ss:[ebp+405AF1]; kernel32.77E5751F
0040A5BD 33D2 xor edx,edx//第2次返回
0040A5BF 52 push edx
0040A5C0 50 push eax
0040A5C1 8B85 1F564000 mov eax,dword ptr ss:[ebp+40561F]
0040A5C7 99 cdq
0040A5C8 290424 sub dword ptr ss:[esp],eax//修改[esp]值=EAX
0040A5CB 195424 04 sbb dword ptr ss:[esp+4],edx
0040A5CF 58 pop eax ; COOLcryp.00409E78
0040A5D0 5A pop edx ; COOLcryp.00409E78
0040A5D1 83FA 00 cmp edx,0
0040A5D4 75 05 jnz short COOLcryp.0040A5DB
0040A5D6 83F8 04 cmp eax,4
0040A5D9 76 02 jbe short COOLcryp.0040A5DD//不跳就OVER了
0040A5DB 61 popad
0040A5DC C3 retn
或者直接改0040A5D9处为JMP,跳过来就OK了。
至此,解压主程序代码前的反跟踪已经全部干掉了。8)
—————————————————————————————————
二、寻找OEP
由于COOLcryptor是在yoda's cryptor的基础上修改的,所以有些地方是相同的。
0040A5DD 8D85 80494000 lea eax,dword ptr ss:[ebp+404980]
0040A5E3 8D9D D74D4000 lea ebx,dword ptr ss:[ebp+404DD7]
0040A5E9 BA E112D536 mov edx,36D512E1
0040A5EE E8 500E0000 call COOLcryp.0040B443//解码0040A992处
0040A5F3 F785 0F564000 10000>test dword ptr ss:[ebp+40560F],10
0040A5FD 74 37 je short COOLcryp.0040A636
0040A5FF 64:FF35 30000000 push dword ptr fs:[30]
0040A606 58 pop eax ; COOLcryp.00409E78
0040A607 85C0 test eax,eax; COOLcryp.0040A992
0040A609 78 0F js short COOLcryp.0040A61A
0040A60B 8B40 0C mov eax,dword ptr ds:[eax+C]
0040A60E 8B40 0C mov eax,dword ptr ds:[eax+C]
0040A611 C740 20 00020000 mov dword ptr ds:[eax+20],200
0040A618 EB 1C jmp short COOLcryp.0040A636
0040A61A 6A 00 push 0
0040A61C FF95 D15A4000 call dword ptr ss:[ebp+405AD1]; kernel32.GetModuleHandleA
0040A622 85D2 test edx,edx
0040A624 79 10 jns short COOLcryp.0040A636
0040A626 837A 08 FF cmp dword ptr ds:[edx+8],-1
0040A62A 75 0A jnz short COOLcryp.0040A636
0040A62C 8B52 04 mov edx,dword ptr ds:[edx+4]
0040A62F C742 50 00020000 mov dword ptr ds:[edx+50],200
0040A636 8D85 BF3C4000 lea eax,dword ptr ss:[ebp+403CBF]
0040A63C 8D9D 24464000 lea ebx,dword ptr ss:[ebp+404624]
0040A642 E8 0B0E0000 call COOLcryp.0040B452
0040A647 8BBD 07564000 mov edi,dword ptr ss:[ebp+405607] ; COOLcryp.00400000
0040A64D 037F 3C add edi,dword ptr ds:[edi+3C]
0040A650 8BB5 07564000 mov esi,dword ptr ss:[ebp+405607] ; COOLcryp.00400000
0040A656 8B4F 54 mov ecx,dword ptr ds:[edi+54]
0040A659 8D85 755B4000 lea eax,dword ptr ss:[ebp+405B75]
0040A65F 50 push eax ; COOLcryp.0040A992
0040A660 6A 04 push 4
0040A662 51 push ecx
0040A663 FFB5 07564000 push dword ptr ss:[ebp+405607] ; COOLcryp.00400000
0040A669 FF95 D55A4000 call dword ptr ss:[ebp+405AD5] ; kernel32.VirtualProtect
0040A66F EB 25 jmp short COOLcryp.0040A696
可以直接Ctrl+F9执行到返回,也可以 Ctr+F 在当前位置搜索命令:ror ebx,7
呵呵,这可是yoda's cryptor壳计算出OEP值代码的特征地方呀 :-)
0040A784 8B9D 07564000 mov ebx,dword ptr ss:[ebp+405607] ; COOLcryp.00400000
0040A78A 039D 0B564000 add ebx,dword ptr ss:[ebp+40560B]
//00400000+00005CC6=00405CC6 这就是OEP值了 :-)
0040A790 C1CB 07 ror ebx,7//yoda's cryptor典型特征码
—————————————————————————————————
三、Magic Jump ,避开IAT加密
这段IAT处理代码是借用 新仙剑 的。Ctrl+F 搜索命令:mov dword ptr ds:[edx],eax
0040A8FD 8902 mov dword ptr ds:[edx],eax; kernel32.CloseHandle
//正确函数进入正确地址。 要的就是这个效果 :-)
0040A8FF EB 19 jmp short COOLcryp.0040A91A
0040A91A F785 0F564000 20000>test dword ptr ss:[ebp+40560F],20
0040A924 74 45 je short COOLcryp.0040A96B//改为JMP ★
0040A96B 83C1 04 add ecx,4
0040A96E 83C2 04 add edx,4
0040A971 8339 00 cmp dword ptr ds:[ecx],0
0040A974 0F85 34FFFFFF jnz COOLcryp.0040A8AE
0040A97A 83C6 0C add esi,0C
0040A97D 837E 04 00 cmp dword ptr ds:[esi+4],0
0040A981 0F85 B4FEFFFF jnz COOLcryp.0040A83B
0040A987 33C0 xor eax,eax
0040A989 40 inc eax
0040A98A 83F8 01 cmp eax,1
0040A98D 74 02 je short COOLcryp.0040A991//这里下断
0040A98F 61 popad
0040A990 C3 retn
注意:在0040A98D处断下后IAT已经处理完毕,此时脱壳的时机最好,程序代码已经解开,输入表完全恢复,再继续运行kongfoo就要来破坏啦。 :-)
继续看看避开IAT重定位:
0040AA85 60 pushad
0040AA86 8B85 07564000 mov eax,dword ptr ss:[ebp+405607] ; COOLcryp.00400000
0040AA8C 8BD8 mov ebx,eax ; COOLcryp.0040AA3F
0040AA8E 8B40 3C mov eax,dword ptr ds:[eax+3C]
0040AA91 03D8 add ebx,eax ; COOLcryp.0040AA3F
0040AA93 33C0 xor eax,eax ; COOLcryp.0040AA3F
0040AA95 8B43 08 mov eax,dword ptr ds:[ebx+8]
0040AA98 8985 C95A4000 mov dword ptr ss:[ebp+405AC9],eax ; COOLcryp.0040AA3F
0040AA9E BA 3E000000 mov edx,3E
0040AAA3 F7E2 mul edx ; COOLcryp.00401400
0040AAA5 50 push eax ; COOLcryp.0040AA3F
0040AAA6 6A 40 push 40
0040AAA8 FF95 455B4000 call dword ptr ss:[ebp+405B45] ; kernel32.GlobalAlloc
0040AAAE 8985 27564000 mov dword ptr ss:[ebp+405627],eax ; COOLcryp.0040AA3F
0040AAB4 33C9 xor ecx,ecx ; COOLcryp.00401384
0040AAB6 33FF xor edi,edi ; COOLcryp.004015C0
0040AAB8 8B93 B0000000 mov edx,dword ptr ds:[ebx+B0]
0040AABE 8B9D 07564000 mov ebx,dword ptr ss:[ebp+405607] ; COOLcryp.00400000
0040AAC4 03D3 add edx,ebx
0040AAC6 8B9D 27564000 mov ebx,dword ptr ss:[ebp+405627]
0040AACC 8B0411 mov eax,dword ptr ds:[ecx+edx]
0040AACF 83F8 00 cmp eax,0
0040AAD2 74 32 je short COOLcryp.0040AB06//改为JMP ★
0040AB06 83C1 04 add ecx,4
0040AB09 83C7 3E add edi,3E
0040AB0C 3B8D C95A4000 cmp ecx,dword ptr ss:[ebp+405AC9]
0040AB12 75 B8 jnz short COOLcryp.0040AACC//循环破坏 :-)
0040AB14 EB 3E jmp short COOLcryp.0040AB54
—————————————————————————————————
四、避开OEP处的Stolen Code
如果没有在0040A98D脱壳的话,那就继续看下去吧。可以BP GlobalAlloc,也可以在OEP处下内存断点
0040B012 803B E8 cmp byte ptr ds:[ebx],0E8
0040B015 74 04 je short COOLcryp.0040B01B
0040B017 41 inc ecx
0040B018 43 inc ebx ; COOLcryp.00405CC6
0040B019 EB F7 jmp short COOLcryp.0040B012
0040B01B 66:817B 01 FF15 cmp word ptr ds:[ebx+1],15FF
0040B021 75 01 jnz short COOLcryp.0040B024
0040B023 41 inc ecx
0040B024 E8 03000000 call COOLcryp.0040B02C
0040B06A 5B pop ebx ; COOLcryp.00405CC6
0040B06B 83C1 06 add ecx,6
0040B06E 51 push ecx
0040B06F 51 push ecx
0040B070 6A 40 push 40
0040B072 FF95 455B4000 call dword ptr ss:[ebp+405B45] ; kernel32.GlobalAlloc
0040B078 8985 23564000 mov dword ptr ss:[ebp+405623],eax//EAX=001434B0
0040B07E 59 pop ecx ; COOLcryp.00405CC6
0040B07F 83E9 06 sub ecx,6
0040B082 51 push ecx
0040B083 8BF3 mov esi,ebx ; COOLcryp.00405CC8
0040B085 8BF8 mov edi,eax ; COOLcryp.0040AFBB
0040B087 FC cld
0040B088 F3:A4 rep movs byte ptr es:[edi],byte ptr ds:[esi]
//保存原OEP处的2个字节6A00至[00142A28]处
0040B08A E8 03000000 call COOLcryp.0040B092//Stolen Code 进去看看
0040B0D0 59 pop ecx
0040B0D1 8BD1 mov edx,ecx
0040B0D3 B0 9A mov al,9A
0040B0D5 5F pop edi
0040B0D6 AA stos byte ptr es:[edi]//NOP掉就OK了 :-)
0040B0D7 E2 FD loopd short COOLcryp.0040B0D6
0040B0D9 E8 03000000 call COOLcryp.0040B0E1
—————————————————————————————————
五、DUMP进程、修复输入表、优化
在00142A28处下断,F9就断下了。
00142A28 6A 00 push 0//Stolen Code
00142A2A 68 C85C4000 push 405CC8
00142A2F C3 retn //飞向光明之巅!:-)
00405CC6 6A 00 push 0//用LordPE纠正ImageSize后完全DUMP这个进程
00405CC8 E8 C1020000 call COOLcryp.00405F8E; jmp to kernel32.GetModuleHandleA
00405CCD A3 00104000 mov dword ptr ds:[401000],eax
00405CD2 6A 00 push 0
00405CD4 68 EA5C4000 push COOLcryp.00405CEA
00405CD9 6A 00 push 0
00405CDB 6A 64 push 64
00405CDD 50 push eax
00405CDE E8 E1020000 call COOLcryp.00405FC4; jmp to user32.DialogBoxParamA
00405CE3 6A 00 push 0
00405CE5 E8 98020000 call COOLcryp.00405F82; jmp to kernel32.ExitProcess
用LordPE删除dumped.exe最后的COOL区段。运行ImportREC,选择这个进程。把OEP改为00005CC6,点IT AutoSearch,点“Get Import”,所有函数都是有效的。去掉“增加新的区段”选项,在原程序找一段空地,我选择处,填入“新的输入信息”的RVA=00005610,FixDump,再用LordPE重建PE!38.4K->22.6K
—————————————————————————————————
六、修复程序中被抽取的代码
运行脱壳后的程序加壳时出错,呵呵,如果在040A98D处脱壳的话就没有这个问题了。
00401ABA E8 B2020000 call COOLcryp.00401D71//出错
00401D71 68 98291400 push 142998
00401D76 C3 retn
看到00401D76下面很长一段0000,处理也很简单,用原程序加壳,跟踪入00142998就看到被抽取的代码了。
00142998 55 push ebp
00142999 8BEC mov ebp,esp
0014299B 83C4 FC add esp,-4
0014299E 57 push edi
0014299F 56 push esi ; COOLcryp.004016F3
001429A0 53 push ebx
001429A1 51 push ecx
001429A2 52 push edx
001429A3 8B7D 08 mov edi,dword ptr ss:[ebp+8] ; COOLcryp.00401054
001429A6 037F 3C add edi,dword ptr ds:[edi+3C]
001429A9 33C0 xor eax,eax
001429AB 66:8B47 06 mov ax,word ptr ds:[edi+6]
001429AF 8945 FC mov dword ptr ss:[ebp-4],eax
001429B2 B9 28000000 mov ecx,28
001429B7 0FAFC1 imul eax,ecx
001429BA 83C0 28 add eax,28
001429BD 8BCF mov ecx,edi
001429BF 2B4D 08 sub ecx,dword ptr ss:[ebp+8] ; COOLcryp.00401054
001429C2 03C8 add ecx,eax
001429C4 81C1 F8000000 add ecx,0F8
001429CA 3B4F 54 cmp ecx,dword ptr ds:[edi+54]
001429CD 76 07 jbe short 001429D6
001429CF 33C0 xor eax,eax
001429D1 E9 80000000 jmp 00142A56
001429D6 8BF7 mov esi,edi
001429D8 81C6 F8000000 add esi,0F8
001429DE 8B55 FC mov edx,dword ptr ss:[ebp-4]
001429E1 83EA 01 sub edx,1
001429E4 8B46 24 mov eax,dword ptr ds:[esi+24]
001429E7 0D 00000080 or eax,80000000
001429EC 8946 24 mov dword ptr ds:[esi+24],eax
001429EF 83C6 28 add esi,28
001429F2 4A dec edx
001429F3 0BD2 or edx,edx
001429F5 75 ED jnz short 001429E4
001429F7 8BD6 mov edx,esi ; COOLcryp.004016F3
001429F9 83C2 28 add edx,28
001429FC 8B46 0C mov eax,dword ptr ds:[esi+C]
001429FF 0346 08 add eax,dword ptr ds:[esi+8]
00142A02 68 00100000 push 1000
00142A07 50 push eax//把上面这些代码复制、粘贴到00401D71处就OK了 :-)
00142A08 68 E11D4000 push 401DE1
00142A0D C3 retn
—————————————————————————————————
, _/
/| _.-~/ _ , 青春都一晌
( /~ / ~-._ |
`\ _/ ~ ) 忍把浮名
_-~~~-.) )__/;;,. _ //'
/'_, --~ ~~~- ,;;___( (.-~~~-. 换了破解轻狂
`~ _( ,_..-- ( ,;'' / ~-- /._`
/~~//' /' `~ ) /--.._, )_ `~
" `~" " `" /~'` `\~~
" " "~' ""
Cracked By 巢水工作坊——fly [OCN][FCG][NUKE][DCM]
2004-03-24 14:00
- 标 题:kongfoo 兄弟的 CoolCryptor V0.9 脱壳
- 作 者:fly
- 时 间:2004年3月24日 05:22
- 链 接:http://bbs.pediy.com