IPTools 1.10 破解
URL http://newhua.infosail.com/IPTools.htm
工具:w32dsm 8.93 gold,VC...
4個月沒有破解了,今天碰到了這個不錯的IP工具,還是delphi寫的,網上沒有該版本的破解,就破它吧!
w32dsm反彙編後覺得很簡單,一下子就查到了"Sorry, but Name or Registration...."
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00497171(C), :0049718B(C), :004971C6(C), :004971EE(C)
|
* Possible StringData Ref from Code Obj ->"Sorry, but Name or Registration
"
->"number is
wrong !"
|
:00497340 B89C744900 mov eax,
0049749C
:00497345 E866C3FAFF call
004436B0
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00497109(C), :0049733E(U)
看見上面的4個出口,找到相關的跳轉nop掉,Thank You for registering出來了。
重新開啟程式,看見了"Program was corrupted!!"
繼續搜尋"Program was corrupted!!",原來只有一個跳轉礙事,
:004B3237 8B1594984B00 mov edx, dword
ptr [004B9894]
:004B323D 3B82B4000000 cmp eax, dword
ptr [edx+000000B4]
:004B3243 740F
je 004B3254 //改為jne
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Possible StringData Ref from Code Obj ->"Program was corrupted !"
|
:004B3245 B85C354B00 mov eax,
004B355C
:004B324A E86104F9FF call
004436B0
進去之後發現還是沒有註冊成功,出現一個非整數錯誤而程式退出,作者可真夠狠毒,
用了一次非法註冊號就永遠取消使用權?用regmon跟蹤了一下啟動過程,分析後發現
關鍵點在HKCU\Software\Microsoft\Windows\CurrentVersion\Devices\0010下面的兩
個鍵值,真正的註冊資訊放在這裡,但這些內容是經過加密運算後寫入的註冊碼,
而相同註冊碼每次產生的鍵值是不同的。刪掉這兩個鍵值,可以進入程式了,但顯示為未註冊。
在登錄檔HKCU\Software\Microsoft\KS-SOFT\IP-Tools中發現了這個鍵值,顧名思義是顯示註冊對話方塊的,
我起初以為只要每次啟動前將該鍵值置0,就不會顯示那個討厭的nag了,於是用BCB做了個loader,
但發現依然不成功,似乎不是單單由這個鍵值決定的,而是由多個鍵值(比如:LastRunTime)
等等計算決定是否顯示nag,這時已經陷入修改登錄檔的迷途,索性將所有可能相關的鍵值都放進
loader中,果然收效顯著,我甚至以為破解成功了,可我啟動程式到達20次左右時,又出現了nag,昏倒!
唉,還是回來看看w32dsm的結果吧,進而開始分析其啟動過程的程式碼,很容易找到了ShowRegDlg
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004B2B32(C)
|
:004B2B43 A118994B00 mov eax,
dword ptr [004B9918]
:004B2B48 833800
cmp dword ptr [eax], 00000000
:004B2B4B 0F8586000000 jne 004B2BD7
//就是這裡判斷是否顯示nag
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:004B2B51 E8AEFFF4FF call
00402B04
* Possible StringData Ref from Code Obj ->"ShowRegDlg"
|
:004B2B56 BA582D4B00 mov edx,
004B2D58
:004B2B5B 8BC7
mov eax, edi
:004B2B5D E87A21F8FF call
00434CDC
:004B2B62 84C0
test al, al
:004B2B64 740F
je 004B2B75
只要把0F8586000000,中的85改成84,nag便不再彈出了,我反覆試驗了2000次(登錄檔失敗綜合症?),
當然不是我自己用滑鼠反覆的開啟關閉,寫個程式即可,我只是在旁邊看它究竟有沒有出現nag而已。
的確是搞定了。
可當我使用其中的ping等功能時,竟然彈出這樣一個對話方塊:
"98% - you use illegal registration key or cracked version of IP-Tools....",原來使用過程
中還有校驗?由於我是爆破,會導致這個異常的產生,其實後來我發現,某些不完全破解的註冊碼也
會產生這個問題。
看了看w32dsm的結果,發現這個對話方塊的彈出是在異常處理模組中的,即delphi的
try
X := Y/Z;
except
on EZeroDivide do HandleZeroDivide;
end;
語句,這種判斷註冊有效否的方法我可是頭一次見到,寫了個簡單的delphi try...except程式反彙編了
一下也沒找到任何突破口,因為無法知道這個異常是個什麼異常,是自己丟擲的還是系統產生的。
想用delphi/bcb的CpuView看看,結果根本無法調進IPTools.exe檔案,提示我說dll載入錯誤,轉而使用VC載入,
竟然成功了,看來delphi/bcb這方面的功能的確有待加強,自己編譯生成的東西無法除錯,vc卻可以,
加了個斷點在這一句上,
:004B2B4B 0F8586000000 jne 004B2BD7
//就是這裡判斷是否顯示nag
隨手把85改成84,原因是想避過nag,可進入程式後點了ping功能一下,竟然沒有出現那個異常!爽!
有句話怎麼說來著:“老天疼憨人”!,動態修改程式碼沒有問題,我怎麼過去沒想到???
可惜我的softice 4.05 for nt 裝上後NT中滑鼠總是飛來飛去,否則早就發現突破口了!
寫個rpp檔案如下,做個loader,OK!
T=3:
F=IP_Tools.exe: ;
P=004b2b4b/0F,85/0F,84:
趁熱打鐵一番,查了查產生先前提到的那個非整數錯誤的Call:
:004B29C8 E8EF6DFDFF call
004897BC
只要把裡面的E8EF改為EB03即可躲過,省著錯填註冊號後每次去刪那兩個鍵值了。
這樣,最終的RPP檔案如下:
T=3:
F=IP_Tools.exe: ;
P=004b2b4b/0F,85/0F,84:
P=004B29C8/E8,EF/EB,03:
這樣做出的loader後所有的功能可用,NAG不再彈出,只是看看license中還是顯示未註冊,
功力的確不夠,忘大小俠們多指點。
傲世男兒
China Crack Group
01-2-11 02:23下午