中華壓縮V7.0破解手記 (4千字)

看雪資料發表於2001-11-20

作者:crackYY[CNCG]
工具:FileInfo v2.45  TRW2000 V1.22  procdump v1.62  keymake v1.34

  這個東東不註冊只能用30天,每次執行都會提示你去註冊它,功能方面我還不清楚,反正我也不打算用它。下面我就介紹一下它的破解經過。
  首先用FI檢測一下是否加了殼,我靠,是用ASPack2001加的殼。用我的Procdump脫殼(這個殼是我後加的,原版沒有)。  ,請出TRW大俠上場(鼓掌呀,啊…什麼東西砸我!),再請出今天的主角中華壓縮(不準亂扔瓜果皮殼!)。好,現在它提示你註冊啦!當然是點選註冊按鈕啦(不過我不打算花錢:D),使用者名稱和註冊碼隨便添一個就行,我寫的使用者名稱是:crackYY 註冊碼:78787878 ,然後Ctrl+N撥出TRW,下斷點:bpx hmemcpy,再按F5把控制權交給中華壓縮。接著點選確定按鈕,TRW會彈出,這時看到的是系統的領空,所以下命令:bc * 清除斷點,再下命令:pmodule 直接跳到程式的領空,這時會看到如下程式碼:

0167:00436D0E  CALL    `USER32!CallWindowProcA`
0167:00436D13  MOV      [EBX+0C],EAX
0167:00436D16  MOV      EAX,[EBX]
0167:00436D18  CMP      EAX,BYTE +0C
0167:00436D1B  JNZ      00436D38
0167:00436D1D  MOV      EDX,[EBX+08]
0167:00436D20  PUSH    EDX
0167:00436D21  MOV      ECX,[EBX+04]
0167:00436D24  MOV      EDX,EAX
0167:00436D26  MOV      EAX,ESI
0167:00436D28  CALL    00432B24
0167:00436D2D  JMP      SHORT 00436D38
0167:00436D2F  MOV      EDX,EBX
0167:00436D31  MOV      EAX,ESI
0167:00436D33  CALL    004340F4

  由於我們下的斷點是:bpx hmemcpy ,所以要繼續向下走,一直找到出錯的地方,然後再後再向回分析,找到正確的註冊碼。按7次F12(超過7次就會出錯),然後再向下分析:

0167:00432F51  POP      EBX
0167:00432F52  RET   
0167:00432F53  NOP   
0167:00432F54  PUSH    EBP
0167:00432F55  MOV      EBP,ESP
0167:00432F57  PUSH    BYTE +00
0167:00432F59  PUSH    EBX
0167:00432F5A  PUSH    ESI
0167:00432F5B  MOV      ESI,EDX
0167:00432F5D  MOV      EBX,EAX
0167:00432F5F  XOR      EAX,EAX
0167:00432F61  PUSH    EBP
0167:00432F62  PUSH    DWORD 00432FA9
0167:00432F67  PUSH    DWORD [FS:EAX]
0167:00432F6A  MOV      [FS:EAX],ESP
0167:00432F6D  LEA      EDX,[EBP-04]
0167:00432F70  MOV      EAX,EBX
0167:00432F72  CALL    00432F24
0167:00432F77  MOV      EAX,[EBP-04]
0167:00432F7A  MOV      EDX,ESI
0167:00432F7C  CALL    0040411C
 
按F10來到如下程式碼處:

0167:004F4DBF  CALL    00432F24
0167:004F4DC4  MOV      EAX,[EBP-08]
0167:004F4DC7  PUSH    EAX
0167:004F4DC8  LEA      EDX,[EBP-10]
0167:004F4DCB  MOV      EAX,[EBX+02E0]
0167:004F4DD1  CALL    00432F24
0167:004F4DD6  MOV      EDX,[EBP-10]
0167:004F4DD9  LEA      ECX,[EBP-0C]
0167:004F4DDC  MOV      EAX,EBX
0167:004F4DDE  CALL    004F4FAC
0167:004F4DE3  MOV      EDX,[EBP-0C]
0167:004F4DE6  POP      EAX
0167:004F4DE7  CALL    0040411C  這裡按F8進入
0167:004F4DEC  JNZ      004F4E64  跳過去就完蛋!
0167:004F4DEE  MOV      DL,01
0167:004F4DF0  MOV      EAX,[00452558]
0167:004F4DF5  CALL    00452658
0167:004F4DFA  MOV      [EBP-04],EAX
0167:004F4DFD  XOR      EAX,EAX
0167:004F4DFF  PUSH    EBP
0167:004F4E00  PUSH    DWORD 004F4E5D
0167:004F4E05  PUSH    DWORD [FS:EAX]
0167:004F4E08  MOV      [FS:EAX],ESP
0167:004F4E0B  MOV      CL,01
0167:004F4E0D  MOV      EDX,004F4EA8
0167:004F4E12  MOV      EAX,[EBP-04]
 
  按F10走到004F4DE7處,用F8跟進,看到如下程式碼:
0167:00404119  LEA      EAX,[EAX+00]
0167:0040411C  PUSH    EBX  這裡可以看到真的註冊碼
0167:0040411D  PUSH    ESI
0167:0040411E  PUSH    EDI
0167:0040411F  MOV      ESI,EAX
0167:00404121  MOV      EDI,EDX
0167:00404123  CMP      EAX,EDX
0167:00404125  JZ      NEAR 004041BA
0167:0040412B  TEST    ESI,ESI
0167:0040412D  JZ      00404197
0167:0040412F  TEST    EDI,EDI
0167:00404131  JZ      0040419E
0167:00404133  MOV      EAX,[ESI-04]
0167:00404136  MOV      EDX,[EDI-04]
0167:00404139  SUB      EAX,EDX

在0040411c處,下命令:d edx 會看到真正的註冊碼,下命令:d eax 會看到我剛才輸入的假註冊碼。
             
  好了,到了最後一步,來個序號產生器玩(誰讓我看你不順眼,讓你永世不得翻身!)。請出keymake,選擇另類序號產生器,添法如下:

  第一個地址: 
   
    中斷地址:4F4DE7
    中斷次數:1
    第一位元組:E8
    指令長度:5                                                       

  第二個地址:
   
    中斷地址:40411C                     
    中斷次數:1
    第一位元組:53
    指令長度:1
                                     
終於結束戰鬥啦,對啦,這個東東可是加了殼的哦,別忘了選上"經過加殼"呀!                                                             

                                                                                E-mail:crackYY@hotmail.com

                                                                                oicq:20651482

相關文章