軟體介紹:
軟體名叫鸚鵡螺網路助手,大小為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. 用找到的註冊碼再重新註冊。這次是真的成功了!!^^