文晟掃描5. 0  之破解經過 (7千字)

看雪資料發表於2002-09-25

文晟掃描5. 0  是一個優秀的掃描軟體,該軟體智慧化較高,容易上手,使用方便,並且不需過多設定就可使用其強大的功能。只是它的試用期只有30天,到期後,該軟體將自動鎖死。。。讓你無法使用。這樣的行為,是包括我在內的所有carcker所不能容忍的!
軟體名稱:文晟掃描5. 0 
保護方式:機器碼加註冊碼
破解工具:softice 4.05
破解思路:方案一 、透過動態跟蹤,獲得註冊碼 。
                    方案二  、在方案一失敗的情況下,找準突破口,編緝程式碼,採取暴破。
Bgein !
          一、載入softice在win98之前。
        二、啟動文晟掃描5.0並開啟註冊對話方塊,此註冊對話方塊內分別有機器碼文字框和註冊碼輸入框,我們可以看到在機器碼文字框裡,程式給出了機器碼:8A8A2ABC1372D380-2319B499(我的是這個,每臺計算機的機器碼都不相同),程式要做的是用這個只產生於一臺計算機的機器碼透過一定的演算法來產生註冊碼,然後來驗證我們輸入的註冊碼是否正確,從而限制免費使用者的長期使用。。。我們不用管它,在密碼輸入框內輸入8888888888888888888888888(隨意,意為讓軟體作者發發發發發。。。呵呵。。。)後,用ctrl+d撥出softice,設定專門用於擋截記憶體copy動作的斷點bpx hmemcpy,然後按F5繼續執行程式,當我們點選註冊碼輸入框的確定按鈕時,馬上被softice成功擋截。
          三、bd *
          四、按F12七次之後,來到文晟掃描5.0的領空:

0167:00512A12  CALL      00559ADC        -----------呼叫我們輸入的密碼                           
0167:00512A17  POP      ECX                                                 
0167:00512A18  POP      ECX                                                   
0167:00512A19  POP      EBP                                                   
。。。。。。。。。。。。。
0167:00512A4D  TEST      AL,04              ---------沒什麼值得懷疑,我都D 某某過了 ,呵呵 。。。             
0167:00512A4F  JNZ      00512A68                                             
0167:00512A51  PUSH      00                                                   
0167:00512A53  PUSH      03                                                   
0167:00512A55  PUSH      000000D3                                             
0167:00512A5A  MOV      EAX,[EBP-04]                                         
0167:00512A5D  CALL      0055CC00                                         
哪哪哪哪哪哪哪哪哪SCANIMAGE!.text+00111A12哪哪哪哪哪哪---------程式領空
          五、如下所示,按F10一直到0167:004167E2  CALL      004DCB70    停下,為什麼要在這裡停下呢?原因有兩個,第一,下d ecx 出現程式給出的機器碼:8A8A2ABC1372D380-2319B499及我們輸入的試探密碼:8888888888888888888888888。第二,你只要再敢走一步,程式馬上就要彈出密碼錯誤提示框了(不信你試試:),所以,我們別無選擇,按F8進入此call  。。。
                                       
0167:004167D9  MOV      EDX,[EDX]                                         
0167:004167DB  MOV      EAX,[EBX+000002F8]                                   
0167:004167E1  POP      ECX                                                   
0167:004167E2  CALL      004DCB70                        -------下d  ecx  出現試探碼及機器碼 ,可疑!如果
0167:004167E7  DEC      DWORD PTR [EBP-10]              再往下 走,我們要提前出局了,只有按F8 。。   
0167:004167EA  LEA      EAX,[EBP-08]                                         
0167:004167ED  MOV      EDX,00000002                                         
0167:004167F2  CALL      005B1A28                     
          六、進入後,我們來到這裡:
0167:004DCB6F  RET                                                  --------程式在這裡停下                     
0167:004DCB70  PUSH      EBP                                                 
0167:004DCB71  MOV      EBP,ESP                                               
0167:004DCB73  ADD      ESP,-10                                               
0167:004DCB76  MOV      [EBP-0C],ECX                                         
0167:004DCB79  MOV      [EBP-08],EDX                                         
0167:004DCB7C  MOV      [EBP-04],EAX                                         
0167:004DCB7F  MOV      EAX,[EBP-08]                                         
0167:004DCB82  CALL      005A20A0                      ---------注意這裡,d eax 指向的機器碼                         
0167:004DCB87  MOV      EAX,[EBP-0C]                                                d ecx指向我們試探碼
0167:004DCB8A  CALL      005A20A0                                             
0167:004DCB8F  XOR      EAX,EAX                                                       
              。。。。。。。。。
            七、其它都沒什麼值得懷疑的,按F10往下走。。。
0167:004DCC67  MOV      EAX,[EBP-10]                                         
0167:004DCC6A  CALL      00517714                                             
0167:004DCC6F  MOV      EAX,[EBP-10]                                         
0167:004DCC72  CALL      005A0E7C                                             
0167:004DCC77  MOV      EAX,[EBP-04]                                         
0167:004DCC7A  CALL      004DD080                    --------注意這裡,再往後一步就game over  !             
0167:004DCC7F  MOV      EAX,[EBP-04]                          別無它路 ,按F8跟進此call...   
0167:004DCC82  CMP      BYTE PTR [EAX+2B],00                                 
0167:004DCC86  JZ        004DCC90                                             
0167:004DCC88  MOV      EAX,[EBP-04]                                         
0167:004DCC8B  CALL      004DC9F0                                             
0167:004DCC90  XOR      EAX,EAX       
                八、按F8進入之後,不知按了多少次F10也不知被這狡猾的程式把softice花了多少次臉後(沒事兒的,花臉之後,按F4兩次就可以恢復正常),來到以下地方:
0167:004DD1CD  CALL      005A1FFC            ------- 注意這裡,d  eax 指向機器碼及試探碼
0167:004DD1D2  JZ        004DD22D                                              d edx指向正確的註冊碼
0167:004DD1D4  CMP      DWORD PTR [EBP-0C],00                                 
0167:004DD1D8  JZ        004DD1E2                                             
0167:004DD1DA  MOV      EAX,[EBP-04]                                         
0167:004DD1DD  CALL      004DC9CC                                             
。。。。。。。。。。。。。。。。。。。。。                                                                   
        九、大家看到,程式在一番瘋來瘋去之後。。。:)來到0167:004DD1CD  CALL      005A1FFC,我們在這裡停下,d  eax指向8888888888888888888888888 和8A8A2ABC1372D380-2319B499而 d  edx則指向lplG5dLhCzg3bWoqtx556Mh7jVvgmEat  看來,這就是我們要找的註冊碼.
        十、繼續跟蹤,驗證我們的推斷。。。經過了多次證實。。。。不久後光榮退出。。。
      十一、將我們得到的註冊碼輸入後(一定要注意大小寫)。。。。程式彈出:“註冊成功”。。。                    脫獄!。。。現在,我們可以無限制的使用了,不過,這不是我們的目的,我們的目的永遠是提高,再提高!
          十二 、總結此次破解,得出經驗:1,驗證註冊碼的子程式一般都會露出馬腳。2,驗證註冊碼的子程式結束之後一般都會讓你game over。3,有時,抓住最後的機會是成功“脫獄”的關鍵之所在!                                                                                                                               


                                            飛龍狗狗

相關文章