2488的破解過程
0A20:6352 2EC606866200 MOV BYTE [CS:6286],00
0A20:6358 803E420001 CMP BYTE [42],01
0A20:635D 90 NOP
0A20:635E 90 NOP
0A20:635F 90 NOP
0A20:6360 0E PUSH
CS
0A20:6361 E8E60A CALL 6E4A
0A20:6364 3D0100 CMP AX,01
0A20:6367 EB67 JMP
SHORT 63D0
0A20:6369 3D0600 CMP AX,06
0A20:636C 7416 JZ
6384
0A20:636E 3D0000 CMP AX,00
0A20:6371 90 NOP
0A20:6372 90 NOP
0A20:6373 2EC606866200 MOV BYTE [CS:6286],00
0A20:6379 1E PUSH
DS
0A20:637A 0E PUSH
CS
0A20:637B 1F POP
DS
0A20:637C BA4A62 MOV DX,624A
//這裡會顯示一些出錯資訊,
//通常的DOS程式在執行前不應該會顯不出錯資訊。
//所以這裡應該是沒有用的,也就是說不要讓程式走到這。
0A20:637F B409 MOV
AH,09
0A20:6381 CD21 INT
21
0A20:6383 1F POP
DS
0A20:6384 9A236D9A11 CALL 6D23
.
.
.
0A20:63BD EB0A JMP
SHORT 63C9
0A20:63BF 90 NOP
0A20:63C0 BAB862 MOV DX,62B8
//這裡一定是別的出錯資訊,
//因為INT 21+AH=09只要改變DX的值就可以顯示不到的資訊
//了,通常軟體會做一個出錯資訊提示集合。
0A20:63C3 EB04 JMP
SHORT 63C9
0A20:63C5 90 NOP
0A20:63C6 BAD562 MOV DX,62D5
//同上
0A20:63C9 B409 MOV
AH,09
0A20:63CB CD21 INT
21
0A20:63CD E9B000 JMP 6480
0A20:63D0 2EC606866201 MOV BYTE [CS:6286],01
//在這裡放標誌,以後會用到。
0A20:63D6 803E190001 CMP BYTE [19],01
0A20:63DB 7525 JNZ
6402
0A20:63DD 803E420000 CMP BYTE [42],00
0A20:63E2 7408 JZ
63EC
0A20:63E4 2E803E866201 CMP BYTE [CS:6286],01
//用到了上面的標誌。
0A20:63EA 7416 JZ
6402
0A20:63EC 8C0E2800 MOV [28],CS
0A20:63F0 C70626008762 MOV WORD [26],6287
0A20:63F6 9A546D9A11 CALL 6D54
0A20:63FB 0BC2 OR
AX,DX
0A20:63FD 7403 JZ
6402
0A20:63FF EB7F JMP
SHORT 6480
0A20:6401 90 NOP
通常在解狗時會看到很多的標誌儲存和讀取。這些都是關鍵不要放過。還有,程式執行需要CALL,所以儘量讓程式多走幾個CALL,這樣破解的可能
性比較大,另外,解狗也要經常試,有的時候也要靠運氣。
羅降神
2002.2.18