chm幫助編輯器v2.6 註冊碼破解詳談之一*脫殼篇* (3千字)

看雪資料發表於2001-02-04

其實沒這個必要,是應peterchen要求所寫!
    就先說說軟體的脫殼吧!它用upx加殼.
    第一種脫殼方法:trw+衝擊波0.2
啟動衝擊波,點選Trace,然後執行要脫殼的軟體,此時衝擊波會顯示一個數值(這裡應該是00488C78),這
就是程式的入口.
trw載入檔案,Ctrl+N,
            g 00488C78
            MakePe 或 pedump
脫殼成功!

    第二種脫殼方法:只用trw.
    用trw載入程式,選擇載入,這時TRW彈出,按一次F10,程式來到這裡:
:004BA000 60                      pushad
:004BA001 E800000000              call 004BA006
一直按F10執行到上面這一行,注意這個call一定要進去,因為你再按一次F10的話,程式就執行了!
於是按F8進入:
* Referenced by a CALL at Address:
|:004BA001 
|
:004BA006 83CDFF                  or ebp, FFFFFFFF
:004BA009 31DB                    xor ebx, ebx
:004BA00B 5E                      pop esi
:004BA00C 8DBEFA6FF4FF            lea edi, dword ptr [esi+FFF46FFA]
:004BA012 57                      push edi
:004BA013 668187F4830B000100      add word ptr [edi+000B83F4], 0001
:004BA01C 81C6B3010000            add esi, 000001B3
:004BA022 EB0A                    jmp 004BA02E

到了這裡,再繼續按F10跳轉到 004BA02E,繼續跟蹤

:004BA02E 01DB                    add ebx, ebx
:004BA030 7507                    jne 004BA039
:004BA032 8B1E                    mov ebx, dword ptr [esi]
:004BA034 83EEFC                  sub esi, FFFFFFFC
:004BA037 11DB                    adc ebx, ebx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004BA030(C)
|
:004BA039 72ED                    jb 004BA028     
:004BA03B B801000000              mov eax, 00000001

在004BA039這一行程式將*向上*跳到004BA028,進行迴圈解壓,而我們沒有必要跟著它走,所以將游標
定位於004BA03B,按F7,這樣就省去了許多步驟了,接著軟體還會有很多類似於這裡的地方,都可以用這
種方法跳過去.若是程式向下跳躍的時候,就不要多此一舉了,讓它跳就是了,還要注意的是按F7前,最好
先在跳轉的地方設個斷點,再bd掉,這樣即使判斷錯誤,也還有的救,be就可以了繼續跟蹤了.繼續向下走:
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:004BA04F(C), :004BA05A(C)
|
:004BA040 01DB                    add ebx, ebx
:004BA042 7507                    jne 004BA04B      \\這裡會*向下*跳轉,讓它跳就是了.
:004BA044 8B1E                    mov ebx, dword ptr [esi]
:004BA046 83EEFC                  sub esi, FFFFFFFC
:004BA049 11DB                    adc ebx, ebx

這兩種情況已經明白了吧!那我就省去一些了.
來到這裡

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004BA177(C)
|
:004BA18A 240F                    and al, 0F
:004BA18C C1E010                  shl eax, 10
:004BA18F 668B07                  mov ax, word ptr [edi]
:004BA192 83C702                  add edi, 00000002
:004BA195 EBE2                    jmp 004BA179

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004BA173(C)
|
:004BA197 61                      popad  執行到這裡以後看看下面這個跳轉
:004BA198 E9DBEAFCFF              jmp 00488C78    //這裡程式便完成來記憶體中的解工作,
                                                    將要跳到程式入口點00488C78
然後就來到了這裡:
00488C78  PUSH EBP    //在這裡下MAKEPE命令(但我的TRW經常出錯,Why)或是Pedump
00488C79  MOV  EBP,ESP  但若你用了Pedump那脫殼後的檔案將不能在其它作業系統和
                          其它機器上執行!
 
到trw目錄中,這時看見一個檔案在那兒,這就是我們脫殼後的檔案,執行一下,挺好的!

相關文章