N188破解過程(DOS下的狗),新疆大俠在嗎?祝你新年快樂,請與我聯絡,最近也見不到你上QQ。真是神龍見首不見尾。 (2千字)

看雪資料發表於2002-02-18

N188破解過程

PART A:

0A21:7786  PUSH    BP
0A21:7787  MOV      BP,SP
0A21:7789  NOP   
0A21:778A  PUSH    CS
0A21:778B  CALL    75F3  //這裡是關鍵,F8進入PART B
0A21:778E  JC      77AA
0A21:7790  MOV      DI,[BP+02]
0A21:7793  ADD      DI,BYTE +16
0A21:7796  MOV      BX,[CS:0D]
0A21:779B  MOV      BX,BA46
0A21:779E  SUB      BX,BA32
0A21:77A2  MOV      [CS:DI],BX
0A21:77A5  MOV      AL,00
0A21:77A7  JMP      SHORT 77AC
0A21:77A9  NOP   
0A21:77AA  MOV      AL,01
0A21:77AC  POP      BP

PART B:
0A21:75F3  PUSH    BP
0A21:75F4  MOV      BP,SP
0A21:75F6  PUSH    SI
0A21:75F7  PUSH    DS
0A21:75F8  MOV      AX,1883
0A21:75FB  MOV      DS,AX
0A21:75FD  CMP      BYTE [CS:6286],01 //我沒有改這裡,因為在下面的那個CALL裡會退出。
                                      //要從退出的CALL入手
0A21:7603  JZ      7613
0A21:7605  CALL    6D23  //這裡是關鍵的過程,因為下面的JZ可以跟到新的片段,而不是結束。
                          //F8進入後來到PART C
0A21:760A  OR      AX,DX  //注意這裡是AX和DX進入或。所以,從6D23中返回的值只有AX和DX要用到。
0A21:760C  JZ      7613  //這裡的跳轉很關鍵.
0A21:760E  XOR      AX,AX
0A21:7610  STC   
0A21:7611  JMP      SHORT 7637
0A21:7613  MOV      AX,[CS:67D9] //下面的這幾段程式碼通常是用來作標誌或初始化的。
0A21:7617  MOV      [CS:67D5],AX
0A21:761B  MOV      AX,[CS:67DB]
0A21:761F  MOV      [CS:67D7],AX
0A21:7623  MOV      BX,6B21
0A21:7626  MOV      AL,[CS:67DC]
0A21:762A  XOR      AX,23

PART C:
119B:6D27  MOV      WORD [BP-02],119B
119B:6D2C  MOV      WORD [BP-04],68C2
119B:6D31  MOV      WORD [BP-06],119B
119B:6D36  MOV      WORD [BP-08],6892
119B:6D3B  PUSH    WORD [BP-06]
119B:6D3E  PUSH    WORD [BP-08]
119B:6D41  PUSH    WORD [BP-02]
119B:6D44  PUSH    WORD [BP-04]
119B:6D47  PUSH    BYTE +01
119B:6D49  PUSH    CS
119B:6D4A  CALL    4484  //當走過這個CALL時會退出。所以,我要把這裡改成向AX和DX中賦0
119B:6D4D  ADD      SP,BYTE +0A
119B:6D50  JMP      SHORT 6D52
119B:6D52  LEAVE 

CALL 4484的CODE是4個位元組,改成XOR AX,AX和XOR DX,DX正好,改過後就完成破解了。

      羅降神
  2002.2.18

相關文章