⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iptools破解.txt

📁 iptools破解算法
💻 TXT
字号:
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中还是显示未注册, 
功力的确不够,忘大小侠们多指点。 

                                                 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -