安全中国首页 > 文章中心 > 脱壳技术
 
安全中国网友投稿专用上传FTP空间:
Ftp服务器:download.anqn.com
Ftp端口:21
用户名:anqn
密 码:anqn.com
 

用Ollydbg快速手脱Krypton 0.5加壳程序——Krypton主程序等

更新时间:2008-5-29 0:01:56
责任编辑:果果龙
热 点:
下载页面:  http://secrecy.ayinfo.ha.cn/soft/51.htm 
软件大小:  821K 
软件语言:  英文 
软件类别:  国外软件 / 免费版 / 加壳软件 
运行环境:  Win9x/NT/2000/XP/ 
软件更新:  2003-5-22 17:37:14 
软件添加:  洋白菜 
下载次数:  588 
软件评级:  ***** 

【软件简介】:很不错的一款免费加密保护工具,他的加密强度也不错。 

【作者声明】:初学Crack,只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教! 

【调试环境】:WinXP、Ollydbg1.09、PEiD、LordPE、ImportREC V1.6 

—————————————————————————————————  
【脱壳过程】: 
           
          
Krypton 0.3和0.4 都有大侠写过脱壳教程,却没有看见写0.5的。 飞叶流枫 大侠写过脱壳机Krykiller0.5,佩服!偶等脱壳菜鸟还是希望有手脱笔记呀。偶失败了N次终于脱了几个Krypton 0.5加壳的实验程序,笔记共享。 
          
调试前先设置一下Ollydbg。打开:Ollydbg——>选项——>调试设置——>异常   
把“忽略在KERNEL32中的内存访问异常”、“INT3中断”、“单步中断” 这3个选项选上。 

OK,让偶开始“战斗”吧! 

————————————————————————————————— 
一、Krypton 0.5主程序:Krypton.exe 


004A4000     54                   push esp 
                                  ====>进入OD后断在这! 
004A4001     E8 00000000          call Krypton.004A4006 

———————————————————————— 
F9运行,程序会在异常处中断。 

003A03E1     8918                 mov dword ptr ds:[eax],ebx   ; Krypton.00450600 
                                  ====>第1次异常 
003A03E3     EB 40                jmp short 003A0425 

Shift+F9通过异常,2次程序运行。好了,Try Again,按1次Shift+F9,停下来。 
弹出数十个对话框,一一确定之。 

———————————————————————— 
003ACBC8     DF59 9C              fistp word ptr ds:[ecx-64] 
                                  ====>第2次异常在这儿!           
                                  ====>看看堆栈区的第二条地址是:003ACCFB(SE句柄) 设断 

003ACBCB     83C1 E7              add ecx,-19 
003ACBCE     9D                   popfd 
003ACBCF     FFE1                 jmp ecx 

———————————————————————— 
在003ACCFB处设断后,Shift+F9运行,程序会中断在003ACCFB 

003ACCFB     64:67:A1 0000        mov eax,dword ptr fs:[0] 
                                  ====>堆栈区的第二条地址        下断点! 

…… …… 省 略 ……  …… 用F7走 …… …… 

003ACD98   ^ 72 F0                jb short 003ACD8A 

003ACD8A     64:67:8926 0000      mov dword ptr fs:[0],esp 
                                  ====>这里注意了!马上又要有异常了! 
                                  ====>在这里看看堆栈的第2个地址是:003AE440  下断! 

003ACD90     EB 3B                jmp short 003ACDCD 

…… …… 省 略 ……  …… 用F7走 …… …… 

003ACE0C    \7B F0                jpo short 003ACDFE 

003ACDFE     CC                   int3 
                                  ====>注意:INT3引起异常! 
                                  ====>F9,程序断在 003AE440 

———————————————————————— 
003AE440     64:67:A1 0000        mov eax,dword ptr fs:[0] 
                                  ====>在003ACD8A处看到的SE句柄 

003AE445     8B20                 mov esp,dword ptr ds:[eax] 
003AE447     64:67:8F06 0000      pop dword ptr fs:[0] 
003AE44D     E8 00000000          call 003AE452 
003AE452     5D                   pop ebp 
003AE453     81ED 9D5D4100        sub ebp,415D9D 
003AE459     8CC9                 mov cx,cs 
003AE45B     EB 42                jmp short 003AE49F 

003AE49F     51                   push ecx 
003AE4A0     E8 F0FFFFFF          call 003AE495 

003AE495     59                   pop ecx            ; 003AE4A5 
003AE496     9C                   pushfd 
003AE497     83C1 E7              add ecx,-19 
003AE49A     9D                   popfd 
003AE49B     FFE1                 jmp ecx 
                                  ====>跳至 003AE48C 

003AE48C     59                   pop ecx 
003AE48D     7A F4                jpe short 003AE483 
003AE48F     EB 01                jmp short 003AE492 

003AE492    \7B EF                jpo short 003AE483 

003AE483     32C9                 xor cl,cl 
003AE485     EB 4A                jmp short 003AE4D1 

003AE4D1     51                   push ecx 
003AE4D2     E8 F0FFFFFF          call 003AE4C7 

003AE4C7     59                   pop ecx            ; 003AE4D7 
003AE4C8     9C                   pushfd 
003AE4C9     83C1 E7              add ecx,-19 
003AE4CC     9D                   popfd 
003AE4CD     FFE1                 jmp ecx 
                                  ====>跳至 003AE4BE 

003AE4BE     59                   pop ecx 
003AE4BF   ^ 74 ED                je short 003AE4AE 

003AE4AE    /E3 02                jecxz short 003AE4B2 
003AE4B0    |EB 05                jmp short 003AE4B7 
003AE4B2    \E9 5B050000          jmp 003AEA12 

003AEA12    /EB 45                jmp short 003AEA59 

003AEA59   ^\EB F4                jmp short 003AEA4F 

003AEA4F     51                   push ecx 
003AEA50   ^ EB F4                jmp short 003AEA46 

003AEA46     59                   pop ecx 
003AEA47   ^ 79 EF                jns short 003AEA38 

003AEA38     80BD DCC44100 FF     cmp byte ptr ss:[ebp+41C4DC],0FF 
003AEA3F     EB 42                jmp short 003AEA83 

003AEA83   ^\EB F4                jmp short 003AEA79 

003AEA79     51                   push ecx 
003AEA7A   ^ EB F4                jmp short 003AEA70 

003AEA70     59                   pop ecx 
003AEA71     7A F0                jpe short 003AEA63 

003AEA63    /0F84 D0000000        je 003AEB39 
                                  ====>注意:如果是用Krypton 0.5加壳的程序此处不跳!则下面不远处就会跳到OEP。但是Krypton主程序却从此处跳下去,在下面进行了4个大循环,每个循环是11265次!可惜偶的键盘呀。汗水的收获是点滴的经验。CTR+F在“整个区段”查找命令:xor ebp,112233   轻松跳出几万圈循环。 

003B38DB     81F5 33221100        xor ebp,112233 
                                  ====>下断!F9运行程序被断下! 
003B38E1     EB 43                jmp short 003B3926 

…… …… 省 略 …… …… 用F7走 …… …… 

003B3943   ^\75 F0                jnz short 003B3935 

003B3935     50                   push eax            ;Krypton.00401000 
                                  ====>EAX=00401000    这就是OEP值       
003B3936     EB 3B                jmp short 003B3973 

003B3973     51                   push ecx  
003B3974     E8 F0FFFFFF          call 003B3969 

003B3969     59                   pop ecx  
003B396A     9C                   pushfd 
003B396B     83C1 E7              add ecx,-19 
003B396E     9D                   popfd 
003B396F     FFE1                 jmp ecx 

003B3960     59                   pop ecx   
003B3961     72 F5                jb short 003B3958 
003B3963     EB 01                jmp short 003B3966 

003B3966     73 F0                jnb short 003B3958 

003B3958     C3                   retn 
                                  ====>飞向 光明之巅!  终于跟到OEP了! 

———————————————————————— 
00401000     6A 00                push 0 
                                  ====>在这儿用LordPE完全DUMP这个进程   

00401002     E8 962A0000          call Krypton.00403A9D 
00401007     A3 B5634000          mov dword ptr ds:[4063B5],eax 
0040100C     68 2C684000          push Krypton.0040682C  
00401011     E8 7B2A0000          call Krypton.00403A91 
00401016     E8 882A0000          call Krypton.00403AA3 

———————————————————————— 
晕,无法用Import REConstructor v1.6修复输入表!偶是没办法啦。但是脱壳后的程序可以运行! 


☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ 

兄弟们或许看急了,看到现在满脑子都是跳转,比蜗牛的速度也快不了多少呀?呵呵,别急呀,偶调试的时候记录的代码是上面的N倍!  现在偶就来演示 快速手脱Krypton 0.5加壳的程序  。当然,最快的脱壳方式是用 飞叶流枫 大侠的Krykiller0.5脱壳机啦。偶用Krykiller0.5试脱几个加壳的程序正常,但是脱Krypton 0.5主程序后发现脱壳后的主程序功能不正常了。不清楚是偶操作的原因还是怎么了。 下面开始啦! 

1 2 下一页

 
相关文章
一日一文章
 
一日一软件
一日一动画