用Ollydbg快速手脫Krypton 0.5加殼程式――Krypton主程式 等

看雪資料發表於2015-11-15

用Ollydbg快速手脫Krypton 0.5加殼程式――Krypton主程式 等
 
 
 
下載頁面:  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主程式後發現脫殼後的主程式功能不正常了。不清楚是偶操作的原因還是怎麼了。 下面開始啦! :-)

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


二、WinXP的spider.exe  蜘蛛紙牌  去你的WINDOWSsystem32目錄下找


偶實在是找不到能夠成功加Krypton殼的常用程式了,只好找幾個不常用的。只選了“K-Protect on API”加殼,否則無法執行。Krypton挺挑剔,一般 VC++和彙編寫的程式比較容易加殼成功。

――――――――――――――――――――――――
010C9000     54                   push esp
                                  ====>進入OD後斷在這!
010C9001     E8 00000000          call spider.010C9006

F9執行,程式會在異常處中斷。

003003E1     8918                 mov dword ptr ds:[eax],ebx
                                  ====>第1次異常

Shift+F9透過異常,2次程式執行。好了,Try Again,按1次Shift+F9,停下來。
彈出數十個對話方塊,一一確定之。

0030CBC8     DF59 9C              fistp word ptr ds:[ecx-64]
                                  ====>第2次異常在這兒!          :-)
0030CBCB     83C1 E7              add ecx,-19
0030CBCE     9D                   popfd
0030CBCF     FFE1                 jmp ecx

――――――――――――――――――――――――
OK,現在不需要跳來跳去的跟蹤了!CTR+F在“整個區段”查詢命令:jmp edx

0030EB08     6240 C5              bound eax,qword ptr ds:[eax-3B]
0030EB0B     2BDF                 sub ebx,edi
0030EB0D     F9                   stc
0030EB0E     1C D3                sbb al,0D3
0030EB10     41                   inc ecx
0030EB11     A8 6A                test al,6A
0030EB13   - FFE2                 jmp edx    ; spider.01008726
                                  ====>找到這裡!Very Good!F2此處下斷!

Shift+F9 跳過第2次異常,砰――程式在0030EB13處斷下!F8過去看看吧  :-)

01008726     6A 60                push 60
                                  ====>偶來到這裡!這裡就是OEP啦!:-)
                                  ====>在這兒用LordPE完全DUMP這個程式

01008728     68 60160001          push spider.01001660
0100872D     E8 BE100000          call spider.010097F0


執行ImportREC,選擇這個程式。把OEP改為00008726, 點IT AutoSearch,點“Get Import”,函式無效,右鍵選“Krypton0.4-0.5外掛”追蹤,OK,全部修復!FixDump,正常執行!600K ->1.37M  !太大了,用LordPE開啟區段把krypton和_!_!_!_刪除,然後再用LordPE重建PE,1.37M->522K  僅比原程式多了1K!COOL


――――――――――――――――――――――――――――――
三、WinXP的regedt32.exe  也是登錄檔編輯器  去你的WINDOWSsystem32目錄下找


01046000     54                   push esp
                                  ====>進入OD後斷在這!
01046001     E8 00000000          call regedt32.01046006

F9執行,程式會在異常處中斷。

002C03E1     8918                 mov dword ptr ds:[eax],ebx   ; regedt32.01001200
                                  ====>第1次異常

Shift+F9透過異常,2次程式執行。好了,Try Again,按1次Shift+F9,停下來。
彈出數十個對話方塊,一一確定之。

002CCBC8     DF59 9C              fistp word ptr ds:[ecx-64]
                                  ====>第2次異常在這兒!          :-)

OK,閃電尋找OEP!CTR+F在“整個區段”查詢命令:jmp edx

002CEB08     6240 C5              bound eax,qword ptr ds:[eax-3B]
002CEB0B     2BDF                 sub ebx,edi
002CEB0D     F9                   stc
002CEB0E     1C D3                sbb al,0D3
002CEB10     41                   inc ecx
002CEB11     A8 6A                test al,6A
002CEB13     FFE2                 jmp edx    ; regedt32.01001088
                                  ====>找到這裡!Very Good!F2此處下斷!

Shift+F9 跳過第2次異常,砰――程式在002CEB13處斷下!F8過去看看吧  :-)

01001088     55                   push ebp
                                  ====>偶來到這裡!這裡就是OEP啦!:-)
                                  ====>在這兒用LordPE完全DUMP這個程式

01001089     8BEC                 mov ebp,esp
0100108B     83EC 44              sub esp,44
0100108E     56                   push esi
0100108F     FF15 08100001        call dword ptr ds:[1001008]

修復輸入表、最佳化PE檔案 方法 同上!


―――――――――――――――――――――――――――――――――
四、Win98的Notepad    不好意思,偶的98下的記事本可以在XP下執行 :-)


00450000     54                   push esp
                                  ====>進入OD後斷在這!
00450001     E8 00000000          call NOTEPAD.00450006

F9執行,程式會在異常處中斷。

004703E1     8918                 mov dword ptr ds:[eax],ebx  ; Notepad.00407000
                                  ====>第1個異常

Shift+F9透過異常,2次程式執行。好了,Try Again,按1次Shift+F9,停下來。

0047CBC8     DF59 9C              fistp word ptr ds:[ecx-64]
                                  ====>第2次異常在這兒!          :-)

OK,閃電尋找OEP!CTR+F在“整個區段”查詢命令:jmp edx

0047EB08     6240 C5              bound eax,qword ptr ds:[eax-3B]
0047EB0B     2BDF                 sub ebx,edi
0047EB0D     F9                   stc
0047EB0E     1C D3                sbb al,0D3
0047EB10     41                   inc ecx
0047EB11     A8 6A                test al,6A
0047EB13   - FFE2                 jmp edx      ; Notepad.004010CC
                                  ====>找到這裡!Very Good!F2此處下斷!

Shift+F9 跳過第2次異常,砰――程式在0047EB13處斷下!F8過去看看吧  :-)

004010CC       55                 db 55  
                                  ====>偶來到這裡!這裡就是OEP啦!:-)
                                  ====>在這兒用LordPE完全DUMP這個程式

修復輸入表、最佳化PE檔案 方法 同上!


――――――――――――――――――――――――――――――
【Krypton 0.5加殼程式脫殼總結】:


1、按前面的方法設定Ollydbg的“忽略異常”的選項

2、在持續執行前1次的異常處(一般是第2次)搜尋“jmp edx”命令!找到如下程式碼處:

0047EB08     6240 C5              bound eax,qword ptr ds:[eax-3B]
0047EB0B     2BDF                 sub ebx,edi
0047EB0D     F9                   stc
0047EB0E     1C D3                sbb al,0D3
0047EB10     41                   inc ecx
0047EB11     A8 6A                test al,6A
0047EB13   - FFE2                 jmp edx   //此處設斷點!

3、Shift+F9 跳過異常,程式在jmp edx處斷下

4、F8過去,就到了OEP的地方!拿出你的LordPE脫殼吧!

5、修復輸入表方法見上!            快不快?  呵呵  :-)  


注:這個方法適用於用Krypton 0.5加殼的程式,Krypton主程式的脫殼方法見上。
錯誤之處歡迎大家指正!偶是脫殼菜鳥,虛心學習。  


――――――――――――――――――――――――――――――    
                                
         ,     _/ 
        /| _.-~/            _     ,        青春都一餉
       ( /~   /              ~-._ |
       `\  _/                   ~ )          忍把浮名 
   _-~~~-.)  )__/;;,.          _  //'
  /'_,   --~    ~~~-  ,;;___(  (.-~~~-.        換了破解輕狂
 `~ _( ,_..-- (     ,;'' /    ~--   /._` 
  /~~//'   /' `~         ) /--.._, )_  `~
  "  `~"  "      `"      /~'`    `\~~   
                         "     "   "~'  ""

    

                    Cracked By 巢水工作坊――fly [OCN][FCG]

                           2003-10-04  02:40


標 題:討論

  • 作 者:CoTaYoMa
    時 間:2003年10月04日 11:39
    詳細資訊:
  • <tr> tr> <tr> tr>
    fxyang 寫道:我在OD中在OEP中直接dump下來就可以執行,不需要修復,加殼的regedt32.exe 也可以用同樣的方法。
    另外Krypton 0.5的主程式我也用同樣的方法脫出來了。

    嘿嘿,這樣用OD直接DUMP出來Krypton 0.5的主程式,可以執行?不會吧........主程式可是有K-LOCK的啊.在它的說明書這樣寫道:
     ; -------------------------------------------------------------------------
    Programmer code for manual K-Execution :
    ; -------------------------------------------------------------------------
    db 0ebh,0eh
    db 'KDES'
    db 00,00,00,00,00
    db 00,00,00,00,00
    ;這裡放上你的程式碼
    db 0ebh,0eh
    db 'KDEE'
    db 00,00,00,00,00
    db 00,00,00,00,00
    The KDES code indicates the beginning of the K-Execution, it means that
    this part once executed will be deleted.
    The KDEE code must be placed at the end of the routine which shall be
    included into the K-Execution.
    ; -------------------------------------------------------------------------
    db 0ebh,0eh
    db 'KEES'
    db 00,00,00,00,00
    db 00,00,00,00,00
    ;這裡放上你的程式碼
    db 0ebh,0eh
    db 'KEEE'
    db 00,00,00,00,00
    db 00,00,00,00,00
    The KEES code indicates the beginning of the K-Execution, it means that
    this part of the code once executed will NOT be deleted (it can be used
    more than once then).
    當你在入口點DUMP的時候,程式程式碼還沒有完全解壓縮完啊!我想這樣DUMP出來的程式一定不能執行吧.就算是引入表修復了也是不能執行的.當程式執行到上面的K-EXE程式碼的時候,它會跳到殼中去再次解壓縮,所以我說要如果不是自己寫一個程式來解壓縮程式碼的話,是不可能脫殼的.


    相關文章