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