不完全的破解

看雪資料發表於2000-11-23

軟體名稱:聰明搬運工2.1珍藏版
軟體型別:VB程式
  動態庫:VBRUN300.DLL
使用工具:SoftICE4.05

    目的:想得出註冊碼


    執行BOXMAN程式後,出現一個註冊視窗,輸入姓名和Virtual註冊碼,我輸入的是:

        Name:chn-boy
        Code:123456789087654321

    Ctrl+D啟動SoftICE4.05,下斷點:bpx hmemcpy,F5回到Windows,點註冊,程式
被攔斷,下命令:bd * ,讓Hmemcpy斷點不再啟用。F12數下,當到VBRUN300的領空時
候,下命令搜尋VBRUN300的核心字串比較程式碼點:

    S 30:0 L FFFFFFFF 8B,CA,F3,A6,74,01,9F,92,8D,5E,08

SoftICE能得到一個Pattern地址,我的是:Pattern found at 0030:816930CF (816930CF)
得到的地址即為VBRUN300的字串比較核心程式碼處,然後 bpx 30:816930CF do "d ds:di"
F5以後,你就可以看到下段程式:

    2A4F:8CA4  CALL      9103
    2A4F:8CA7  MOV      DI,BX
    2A4F:8CA9  POP      DX
    2A4F:8CAA  CMP      DX,CX
    2A4F:8CAC  LAHF
    2A4F:8CAD  JA        8CB1
    2A4F:8CAF  MOV      CX,DX  <-- 其實上述斷點是下在這個地方,程式中斷於此

    2A4F:8CB1  REPZ CMPSB      <-- 這個就是字串比較指令了,第一次到這裡的
                                        時候,你可以看到你輸入的Virtual Code。
    2A4F:8CB3  JZ        8CB6
    2A4F:8CB5  LAHF
    2A4F:8CB6  XCHG      AX,DX
    2A4F:8CB7  LEA      BX,[BP+08]
    2A4F:8CBA  CALL      92CB
    2A4F:8CBD  POP      BX
    2A4F:8CBE  TEST      BL,01
    2A4F:8CC1  JNZ      8CC9
    2A4F:8CC3  LEA      BX,[BP+0C]

下命令d es:di,你可以看到資料區顯示的是"-",不用管他,繼續按F5。要按多少下,是根據
你輸入的Code長度決定(注:輸入的Virtual Code長度要足夠長,要不將得不到註冊碼,好像
要不小於16個字元吧?具體我沒有測試過)。按F5到一定的多下的時候,你就可以看到在你的
資料區出現一串字串。我的是4C99379193C6 24D

383F:0000027C 34 43 39 39 33 37 39 31-39 33 43 36 20 32 34 44  4C99379193C6 24D
383F:0000028C 03 00 37 32 0F 00 35 36-37 38 39 30 38 37 36 35  ..72..5678908765
383F:0000029C 34 33 32 31 0F 00 0C 00-31 32 33 34 35 36 37 38  4321....12345678
383F:000002AC 39 30 38 37 05 00 01 00-36 32 0F 00 35 36 37 38  9087....62..5678

這時,你 d es:di,就可以看到你原來輸入的Virtual Code了。那麼ds:si中的字串內容
就是你的註冊碼了,bd *,F5,回到Windows,重新在註冊碼框中輸入你得到的字串,我
的就是4C99379193C6 24D,點註冊,彈出一個對話方塊“請向作者註冊”。其實說白了就是注
冊仍然沒有成功,不過我估計這可能還缺少一個檔案,需要作者補齊吧。在往下我沒有深入
的研究了,看看那位高手幫忙解決這個問題。誠盼!


後記:這其實是一個不完全的破解,我也是個新手,很多地方我都不懂,也是在一步一步學
      習,希望老一輩給予指教。

相關文章