鸚鵡螺網路助手破解 (5千字)

看雪資料發表於2001-01-19

軟體介紹:
軟體名叫鸚鵡螺網路助手,大小為708KB。可在下列網址download.
http://newhua.infosail.com/down/netranger170c.exe

鸚鵡螺網路助手是一個整合了用於TCP/IP協議的多種網路工具的應用軟體。她基於Windows Socket2.0版
本,功能包括:Ping;Host lookup(主機查詢);Finger(帳號查詢);同步本地主機時鐘的Time(網路時鐘); WhoIs(域名查詢);TraceRoute(路由跟蹤);ISPPinger(以一定時間間隔持續ping同一臺主機);QoD服務; 增強的快速撥號;支援多帳號的電郵檢查等等。其他特性包括多功能的托盤圖示,線上檢查軟體升級,獲 得本機IP地址,將主機查詢結果存入本地HOSTS檔案等等。本軟體適用於安裝了TCP/IP協議的Windows 9x作業系統(包括Windows 95,97,98和Windows ME)。本軟體需要有Microsoft Winsock 2.0或更高版本才 能正常工作。Windows 98及以上版本在安裝時即已帶有,而Windows 95使用者可以從微軟公司的網站下載有
關的升級包,也可以從鸚鵡螺工作室的主頁下載一個複製



我用的工具:softICE 4.05.可在下列網址download
http://mud.sz.jsinfo.net/per/aaron/files/debuggers/win/si405w9x.zip

知識要求: 1。具備基本的彙編知識。
          2。懂得 softICE 的基本操作。

所用方法: 1.找註冊失敗點。
          2。找關鍵跳躍點。
          3。找關鍵CALL.
          4。找出註冊碼。


I。找註冊失敗點。

  執行軟體NautiNW,註冊軟體。

1.  輸入名字和註冊碼:
 
使用者名稱:uhlan
註冊碼:78787878 (從 Error_Free 大哥處學來的,他可是我的啟蒙老師哦!^^)

2.按 Ctrl-D 進入 softICE.

3.設斷 BPX HMEMCPY 按 F5 返回 NautiNW.

4.按回車即被攔截, 不停地按F12,當按了21下時出現了註冊失敗的視窗。

5。按確定後,按F5 回到 NautiNW,按前面的步驟再來一次。

6。不停地按F12,不過這次是按了20下,就停住。按 F6, 再用 F9設一個斷點。

7。不停地按F10,按到一定時候,會看到

  0177:00417AC2 CALL 00437436

8。 當我們再按一次時,失敗的視窗就跳出來了。於是,這個CALL就是我們要找的失敗點了。



II.找關鍵跳躍點。

9。再重新註冊一次。按回車即被攔截. 由於剛才用 F9設了一個斷點,現在就直接來到這裡。

10。按 F10, 直到看到下列語句。

....

    0177:00417A54  TEST EAX,EAX  (EAX=0)
    0177:00417A56  JZ 00417AB4  (一跳就失敗)

...

11.在 JZ 00417AB4 處 打入 rfl+z

12.再按F10,這時程式就不再跳躍了。

13.按F5退出softICE,這時就會出現註冊成功的畫面。


(從這裡我們可以推測到,EAX 是一個標誌位,當EAX=0時,表明輸入註冊碼不正確,當 EAX 不等於 0時,表明輸入註冊碼正確。所以,下一步,我們要找的就是那個CALL
負責在EAX設標誌)。



III.找關鍵CALL

14. 再重新註冊一次。按回車即被攔截.

15.  按 F10, 直到

....

  0177:00417A4F  CALL 00417C20

....


    0177:00417A54  TEST EAX,EAX  (EAX=0)
    0177:00417A56  JZ 00417AB4  (一跳就失敗)

...

過了那個CALL後,我們可以看到 EAX已經被清零了。於是,可以
十分肯定地說,CALL 00417C20 就是我們要找的關鍵 CALL.

註冊碼的對比就在那個 CALL 裡面。



IV. 找出註冊碼。

16。在 0177:00417A4F CALL 00417C20 按F9設斷。再註冊一次,

17。 在 0177:00417A4F CALL 00417C20 被攔截後,按F8進入這個CALL.

19. 不停地按F10,並留意 EAX的變化,看什麼時候變0.

20.  終於,在這裡,

.....

  0177:00417CE3  XOR EAX,EAX

.....

  ( 程式執行到這裡把 EAX 清零後,就會跳出這個CALL,回到主程式,然後,就是對比EAX的值,再著

  失敗視窗就出現了。

我們可以想到,程式肯定有一個地方對比註冊碼,然後再決定來不來到這裡來吧 EAX 清零。)


21。再註冊一次。

22。在 0177:00417A4F CALL 00417C20 被攔截後,按F8進入這個CALL

23,不停地按F10,不過這次是看那裡的 JUMP 會跳過前面清零的步驟。

24。皇天不負苦心人!,終於,我們可以在這裡找到線索。

  .....
    0177:00417C87  CALL 004232A0
    0177:00417C8C  ADD ESP,0C
    0177:00417C8F  MOV BYTE PTR [ESP+20],00
    0177:00417C94  TEST EAX,EAX          (檢驗標誌位, EAX=1 則失敗。 EAX=0 則成功 )
    0177:00417C96  LEA ECX,[ESP+28]
    0177:00417C9A  JNZ 00417CC9        (跳則失敗,不跳則成功)
....

  (從這裡,可以推斷, EAX在這裡變成另一個標誌位的暫存器,而 CALL 004232A0 是設定這個新標誌的關鍵CALL)


25. 於是,再重新註冊一次。

26。 來到 0177:00417C87  CALL 004232A0 時,按 F8 進入。

27。 以下是我抄下來的 CALL 004232A0 內的程式。

                    PUSH EBP
                    MOV EBP,ESP
                    PUSH EDI
                    PUSH ESI
                    PUSH EBX
                    MOV ECX,[EBP+10]
                    JECXZ 004232D1
                    MOV EBX,ECX
                    MOV EDI,[EBP+08]
                    MOV ESI,EDI
                    XOR EAX,EAX
                    REPNZ SCASB
                    NEG ECX
                    ADD ECX,EBX
                    MOV EDI,ESI
                    MOV ESI,[EBP+0C]
                    REPZ CMPSB
                    MOV AL,[ESI-01] (下 d esi-01 的命令, 就可看到 78787878, 正是我們輸入的號碼)
                    XOR ECX,ECX
                    CMP AL,[EDI-01]  (下 d edi-01 的命令, 就可看到 xxxxxxxx, 正是要找的註冊碼,還不快抄下?)
                    JA 004232CF
                    JZ 004232D1        ( 不 jump 就失敗) 
                    DEC ECX
                    DEC ECX
                    NOT ECX
                    MOV EAX,ECX        ( 將 EAX 的標誌設為1)
                    POP EBX
                    POP ESI
                    POP EDI
                    LEAVE
                    RET
   

28.  用找到的註冊碼再重新註冊。這次是真的成功了!!^^

相關文章