Reptile V2.01之暴力破解(難度:簡單,但反映出一種思路) (6千字)

看雪資料發表於2000-10-31

Reptile V2.01之暴力破解(難度:簡單,但反映出一種思路)

來源:整理D盤時發現的,軟體上提供的地址為:http://www.sausage.com中的某處,估計已有新版本出來了。
      但據我估計,其加密方式應該不會變的。Size:2M
功能:製作網頁背景的好東東(廣告語:感覺設計個人風格的網頁很難嗎?試試它,輕鬆做個很有味道的背景出來......)
限制:必須註冊才能執行。用UPX5.0壓縮過的,用Procdump1.62解壓後不能正常執行。
    其判斷註冊的程式是位於windows\system\SausReg.exe
工具:trw2k122,ultraedit
破解過程:

1。用TRW載入執行,設斷bpm createwindowex,中斷後,下pmodule。

2。一直按F10直到出現NAG屏。在其上的CALL處設斷。如下:
0167:004B73BC E8EFEAF4FF      CALL    00405EB0
0167:004B73C1 8B1D48924B00    MOV      EBX,[004B9248]
0167:004B73C7 8B03            MOV      EAX,[EBX]
0167:004B73C9 E87294F7FF      CALL    00430840
0167:004B73CE 8B03            MOV      EAX,[EBX]
0167:004B73D0 BA28744B00      MOV      EDX,004B7428
0167:004B73D5 E87E91F7FF      CALL    00430558
0167:004B73DA 8B0D80924B00    MOV      ECX,[004B9280]
0167:004B73E0 8B03            MOV      EAX,[EBX]
0167:004B73E2 8B15A0C44A00    MOV      EDX,[004AC4A0]
0167:004B73E8 E86B94F7FF      CALL    00430858  **在此處設斷,按F8進入**
0167:004B73ED 8B0DD0914B00    MOV      ECX,[004B91D0]
0167:004B73F3 8B03            MOV      EAX,[EBX]
0167:004B73F5 8B15ECC04900    MOV      EDX,[0049C0EC]
0167:004B73FB E85894F7FF      CALL    00430858

3。再次執行中斷後,按F8進入,按F10直到出現NAG屏,重複該兩步。依次為:
0167:00430877 33C0            XOR      EAX,EAX
0167:00430879 55              PUSH    EBP
0167:0043087A 689B084300      PUSH    DWORD 0043089B
0167:0043087F 64FF30          PUSH    DWORD [FS:EAX]
0167:00430882 648920          MOV      [FS:EAX],ESP
0167:00430885 8BCB            MOV      ECX,EBX
0167:00430887 33D2            XOR      EDX,EDX
0167:00430889 8B45F8          MOV      EAX,[EBP-08]
0167:0043088C 8B30            MOV      ESI,[EAX]
0167:0043088E FF5624          CALL    NEAR [ESI+24]  **在此處設斷,按F8進入**
0167:00430891 33C0            XOR      EAX,EAX
0167:00430893 5A              POP      EDX
0167:00430894 59              POP      ECX
0167:00430895 59              POP      ECX
0167:00430896 648910          MOV      [FS:EAX],EDX
*********************
*********************
0167:0042BA32 64FF30          PUSH    DWORD [FS:EAX]
0167:0042BA35 648920          MOV      [FS:EAX],ESP
0167:0042BA38 8B45FC          MOV      EAX,[EBP-04]
0167:0042BA3B 6683B8CE01000000 CMP      WORD [EAX+01CE],BYTE +00
0167:0042BA43 7412            JZ      0042BA57
0167:0042BA45 8B5DFC          MOV      EBX,[EBP-04]
0167:0042BA48 8B55FC          MOV      EDX,[EBP-04]
0167:0042BA4B 8B83D0010000    MOV      EAX,[EBX+01D0]
0167:0042BA51 FF93CC010000    CALL    NEAR [EBX+01CC]  **在此處設斷,按F8進入**
0167:0042BA57 33C0            XOR      EAX,EAX
0167:0042BA59 5A              POP      EDX
0167:0042BA5A 59              POP      ECX
0167:0042BA5B 59              POP      ECX
*********************
*********************
0167:004B01AA E8A139F5FF      CALL    00403B50
0167:004B01AF 8D45DC          LEA      EAX,[EBP-24]
0167:004B01B2 E821C0FCFF      CALL    0047C1D8  **在此處設斷,按F8進入**
0167:004B01B7 2C01            SUB      AL,01
0167:004B01B9 0F8282000000    JC      NEAR 004B0241
0167:004B01BF 48              DEC      EAX
0167:004B01C0 2C02            SUB      AL,02
0167:004B01C2 0F838A000000    JNC      NEAR 004B0252
0167:004B01C8 33C9            XOR      ECX,ECX
0167:004B01CA B201            MOV      DL,01
0167:004B01CC A188B94900      MOV      EAX,[0049B988]
0167:004B01D1 E862B7F7FF      CALL    0042B938
0167:004B01D6 8945F4          MOV      [EBP-0C],EAX
0167:004B01D9 33C0            XOR      EAX,EAX

4。在該CALL進入後,便進入判斷核心:
0167:0047C1D8 55              PUSH    EBP
0167:0047C1D9 8BEC            MOV      EBP,ESP
0167:0047C1DB 83C4E8          ADD      ESP,BYTE -18
0167:0047C1DE 53              PUSH    EBX
0167:0047C1DF 56              PUSH    ESI
0167:0047C1E0 57              PUSH    EDI
0167:0047C1E1 8BF0            MOV      ESI,EAX
0167:0047C1E3 8D7DE8          LEA      EDI,[EBP-18]
0167:0047C1E6 B906000000      MOV      ECX,06
0167:0047C1EB F3A5            REP MOVSD
0167:0047C1ED 8D45E8          LEA      EAX,[EBP-18]
0167:0047C1F0 8B1500B94700    MOV      EDX,[0047B900]
0167:0047C1F6 E87183F8FF      CALL    0040456C
0167:0047C1FB 33C0            XOR      EAX,EAX
0167:0047C1FD 55              PUSH    EBP
0167:0047C1FE 6867C24700      PUSH    DWORD 0047C267
0167:0047C203 64FF30          PUSH    DWORD [FS:EAX]
0167:0047C206 648920          MOV      [FS:EAX],ESP
0167:0047C209 E84AFAFFFF      CALL    0047BC58  **此CALL為判斷是否註冊處,標誌存放於AL**
0167:0047C20E A2D4A94B00      MOV      [004BA9D4],AL  **若AL=0,則未註冊,否則註冊**
0167:0047C213 803DD4A94B0000  CMP      BYTE [004BA9D4],00
0167:0047C21A 752D            JNZ      0047C249  **在此設斷,把此處改為JMP**
0167:0047C21C E86FFFFFFF      CALL    0047C190
0167:0047C221 84C0            TEST    AL,AL
0167:0047C223 7410            JZ      0047C235
0167:0047C225 813DD8A94B009001+CMP      DWORD [004BA9D8],0190
0167:0047C22F 7D04            JNL      0047C235
0167:0047C231 B302            MOV      BL,02
0167:0047C233 EB16            JMP      SHORT 0047C24B
0167:0047C235 8D45E8          LEA      EAX,[EBP-18]
0167:0047C238 E803F7FFFF      CALL    0047B940
0167:0047C23D 84C0            TEST    AL,AL
0167:0047C23F 7404            JZ      0047C245
0167:0047C241 B303            MOV      BL,03

在47c21a處,下r fl z,按F5看看,OK,程式正常執行,因此可知,只須把此處的75改為EB即可。
但該程式由UPX壓縮,沒法直接改,便下斷bpm 47c21a,看是什麼地方往此處寫的75。

5。重新執行,第二次中斷後,你會來到下處:
0167:00561061 11DB            ADC      EBX,EBX
0167:00561063 730B            JNC      00561070
0167:00561065 8A06            MOV      AL,[ESI]  **在此處給AL賦值**
0167:00561067 46              INC      ESI
0167:00561068 8807            MOV      [EDI],AL
0167:0056106A 47              INC      EDI  **程式在此處中斷,edi=47c21a,al=75**
0167:0056106B EBEB            JMP      SHORT 00561058

看看EDI恰好等於47c21a,AL恰好等於75。呵呵,看看75是從哪裡來的呢?――[ESI]。

6。下斷bpm esi-1,重新執行。結果發現程式仍中斷於0167:0056106A,由此可知esi-1處的程式碼沒被
改變過。

7。下指令d esi-1,抄下記憶體中的程式碼。
  75 2d 12 fc 9e 88 a0 b1 a0 81 11 d8 90
  --
8。用ultraedit開啟Reptile.exe,查詢上述程式碼,把75改為EB即可。
  執行一下,作幾個背景瞧瞧,呵呵,成功了吧?


                                <Cracked by KanKer>

相關文章