• 标 题:N188破解过程(DOS下的狗),新疆大侠在吗?祝你新年快乐,请与我联系,最近也见不到你上QQ。真是神龙见首不见尾。 (2千字)
  • 作 者:罗降神
  • 时 间:2002-2-18 9:13:04
  • 链 接:http://bbs.pediy.com

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