本人作品,2488的解狗教程(DOS下的狗),應客戶要求,不便說出軟體名字。 (2千字)

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

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

相關文章