【破文标题】驱动精灵2005 简体中文专业版破解过程
【破文作者】4nil
【作者邮箱】4nil@163.com
【作者主页】ak4nil.iblog.cn
【破解工具】PEID,OD,W32Dasm
【破解平台】WIN XP
【软件名称】驱动精灵2005 简体中文专业版
【软件大小】720 KB
【原版下载】http://www.onlinedown.net/soft/3450.htm
【保护方式】UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & Laszlo
【软件简介】
驱动精灵是一款集驱动管理和硬件检测于一体的、专业级的驱动管理和维护工具。驱动精灵为用户提供驱动备
份、恢复、安装、删除、在线更新等实用功能。经常重装电脑的人一定有找驱动程序的经验,要不就原版驱动
程序已经不见了,就是事先没有备份起来,找起来相当费时;现在你只要利用驱动精灵的驱动程序备份功能,
在电脑重装前,将你目前电脑中的最新版本驱动程序通通备份下载,待重装完成时,再试用它的驱动程序还原
功能安装,这样,便可以节省掉许多许动程序安装的时间,并且在也不怕找不到驱动程序了。除了驱动备份恢
复功能,又提供了Outlook地址簿、邮件和IE收藏夹的备份与恢复。简体中文、繁体中文、英文、法文、西班牙
文、俄文用户界面供选择!驱动精灵对于手头上没有驱动盘的用户十分实用,用户可以通过本软件将系统中的
驱动程序提取并备份出来,达到“克隆”的效果。驱动精灵可以将所有驱动程序制作到一个可执行文件,用户
在重新安装操作系统后,可以使用这个文件一键还原所有的驱动程序。
------------------------------------------------------------------------
【破解过程】
PART 1:伪注册
Peid 查出来是UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & Laszlo
用UPX通用脱壳脱之。
可以成功运行。又查了下是Borland Delphi 6.0 - 7.0的。
尝试注册,提示错误。
不管直接用OD载入
下bp MessageBoxA.
F9,运行。
用户名:4nil
注册码:12345678
确认后断了。
F8走,直到弹出消息,点个确定又回来。
继续F8,几下后就来到主程序领空了。
往上看,
0049DE62 BA 14E34900 mov edx,MyDriver.0049E314 ; ASCII "\System32
\spool\drivers\w32x86\2\riched20.dll SetActiveEditControlFont, Arial, 30"
0049DE67 E8 EC6DF6FF call MyDriver.00404C58
0049DE6C 8D95 70FFFFFF lea edx,dword ptr ss:[ebp-90]
0049DE72 8B45 FC mov eax,dword ptr ss:[ebp-4]
0049DE75 8B80 04030000 mov eax,dword ptr ds:[eax+304]
0049DE7B E8 1C57FAFF call MyDriver.0044359C
0049DE80 8B95 70FFFFFF mov edx,dword ptr ss:[ebp-90] //假码
0049DE86 8B45 EC mov eax,dword ptr ss:[ebp-14] //真码
0049DE89 E8 2673F6FF call MyDriver.004051B4
0049DE8E 85C0 test eax,eax
0049DE90 0F84 B2010000 je MyDriver.0049E048
0049DE96 8B45 FC mov eax,dword ptr ss:[ebp-4]
0049DE99 8B80 04030000 mov eax,dword ptr ds:[eax+304]
0049DE9F 33D2 xor edx,edx
0049DEA1 E8 2657FAFF call MyDriver.004435CC
0049DEA6 8D45 EC lea eax,dword ptr ss:[ebp-14]
0049DEA9 E8 126DF6FF call MyDriver.00404BC0
0049DEAE 6A 00 push 0
0049DEB0 68 68E34900 push MyDriver.0049E368 ; ASCII "Registration Success!"
0049DEB5 68 80E34900 push MyDriver.0049E380 ; ASCII " Thank you for your
support.
We will work even harder and
notify you future releases."
0049DEBA 8B45 FC mov eax,dword ptr ss:[ebp-4]
0049DEBD E8 7EBEFAFF call MyDriver.00449D40
0049DEC2 50 push eax
0049DEC3 E8 849CF6FF call <jmp.&user32.MessageBoxA>
看到了吗?这里有成功的提示,那我们看看
0049DE90 0F84 B2010000 je MyDriver.0049E048
这行判断,错误的注册码就会跳到我们刚才那里。
所以我们在0049DE80下个F2
F9运行出来再试一次,OK断下。
走到0049DE89就可以把EAX的东西复制出来了,那个就是真的注册码。
好了,第一部分搞定,为什么叫第一部分呢。。。。 PART 2:文件注册
重新启动程序,是否发现过了5秒钟又是那个注册的网址打开的,呵呵
接着程序关闭,重新开启又提示注册,说明我们的破解不完美。
它还有其他验证。
我们继续在成功的地方往下看。
0049DEC8 8B45 FC mov eax,dword ptr ss:[ebp-4]
0049DECB C680 45030000>mov byte ptr ds:[eax+345],0
0049DED2 B2 01 mov dl,1
0049DED4 A1 485B4600 mov eax,dword ptr ds:[465B48]
0049DED9 E8 6A7DFCFF call MyDriver.00465C48
0049DEDE 8945 F8 mov dword ptr ss:[ebp-8],eax
0049DEE1 33C0 xor eax,eax
0049DEE3 55 push ebp
0049DEE4 68 FDDF4900 push MyDriver.0049DFFD
0049DEE9 64:FF30 push dword ptr fs:[eax]
0049DEEC 64:8920 mov dword ptr fs:[eax],esp
0049DEEF BA 01000080 mov edx,80000001
0049DEF4 8B45 F8 mov eax,dword ptr ss:[ebp-8]
0049DEF7 E8 EC7DFCFF call MyDriver.00465CE8
0049DEFC B1 01 mov cl,1
0049DEFE BA E0E34900 mov edx,MyDriver.0049E3E0 ; ASCII
"\Software\Microsoft\Windows\CurrentVersion\IPSec"
0049DF03 8B45 F8 mov eax,dword ptr ss:[ebp-8]
0049DF06 E8 457EFCFF call MyDriver.00465D50
0049DF0B 84C0 test al,al
0049DF0D 74 0C je short MyDriver.0049DF1B
0049DF0F 33C0 xor eax,eax
0049DF11 8945 F0 mov dword ptr ss:[ebp-10],eax
0049DF14 C745 F4 00000>mov dword ptr ss:[ebp-C],400E0000
0049DF1B 33C0 xor eax,eax
0049DF1D 55 push ebp
0049DF1E 68 7EDF4900 push MyDriver.0049DF7E
0049DF23 64:FF30 push dword ptr fs:[eax]
0049DF26 64:8920 mov dword ptr fs:[eax],esp
0049DF29 FF75 F4 push dword ptr ss:[ebp-C]
0049DF2C FF75 F0 push dword ptr ss:[ebp-10]
0049DF2F 8D85 6CFFFFFF lea eax,dword ptr ss:[ebp-94]
0049DF35 E8 26DEF6FF call MyDriver.0040BD60
0049DF3A 8B8D 6CFFFFFF mov ecx,dword ptr ss:[ebp-94]
0049DF40 BA 1CE44900 mov edx,MyDriver.0049E41C ; ASCII "RISCx86"
0049DF45 8B45 F8 mov eax,dword ptr ss:[ebp-8]
0049DF48 E8 4782FCFF call MyDriver.00466194
0049DF4D 8D95 68FFFFFF lea edx,dword ptr ss:[ebp-98]
0049DF53 8B45 FC mov eax,dword ptr ss:[ebp-4]
0049DF56 8B80 00030000 mov eax,dword ptr ds:[eax+300]
0049DF5C E8 3B56FAFF call MyDriver.0044359C
0049DF61 8B8D 68FFFFFF mov ecx,dword ptr ss:[ebp-98]
0049DF67 BA 2CE44900 mov edx,MyDriver.0049E42C ; ASCII "UserName"
0049DF6C 8B45 F8 mov eax,dword ptr ss:[ebp-8]
0049DF6F E8 2082FCFF call MyDriver.00466194
好像他把注册后的名字存放这里了前面的键存放的是系统的时间和软件安装的时间,
那我想肯定其他地方也有这个时间的验证把。我们就用OD查看字符串
搜索"RISCx86"果然还有,而且有很多,不过有一个地方比较特别,因为他后面也跟
了个"UserName"。直觉告诉我这里是重点,呵呵,因为一般的肯定是比较下时间什么
的。
那我们就进代码看看。
004C7F4F . B8 04814C00 mov eax,MyDriver.004C8104 ; ASCII "windir"//这里下断
004C7F5C . BA 14814C00 mov edx,MyDriver.004C8114 ; ASCII "\system.sys"
004C7FA8 . BA 28814C00 mov edx,MyDriver.004C8128 ; ASCII
"\Software\Microsoft\Windows\CurrentVersion\IPSec"
004C7FE8 . BA 68814C00 mov edx,MyDriver.004C8168 ; ASCII "RISCx86"
004C7FF7 . BA 78814C00 mov edx,MyDriver.004C8178 ; ASCII "UserName"
004C803C . BA 68814C00 mov edx,MyDriver.004C8168 ; ASCII "RISCx86"
004C804B . BA 78814C00 mov edx,MyDriver.004C8178 ; ASCII "UserName"
关于ASCII的几句代码。那就在最前面的地方下个断点。
这次要重新启动程序过了,我们刚才不是发现过了5秒左右系统出来注册的网站的码?
那我们就先给他注册下,然后CTRL+F2重新开始调试,F9运行,等了一会断下。
004C7F4F . B8 04814C00 mov eax,MyDriver.004C8104 ; ASCII "windir" //这里断下
004C7F54 . E8 076DF4FF call MyDriver.0040EC60
004C7F59 . 8D45 F0 lea eax,dword ptr ss:[ebp-10]
004C7F5C . BA 14814C00 mov edx,MyDriver.004C8114 ; ASCII "\system.sys"
004C7F61 . E8 1ACFF3FF call MyDriver.00404E80
004C7F66 . 8B45 F0 mov eax,dword ptr ss:[ebp-10]
004C7F69 . E8 8217F4FF call MyDriver.004096F0
004C7F6E . 84C0 test al,al
004C7F70 . 75 02 jnz short MyDriver.004C7F74
F8走,到004C7F70挑走就失败了。这说明什么呢,呵呵,看前面几个字符串应该知道些眉目了。
BINGO。"windir"不是系统目录吗?"\system.sys"应该就是他验证的文件把。
这个简单我们用ULTRA editor在系统目录创建一个文件叫system.sys,内容先随便写,我写了
"Crack by 4nil"。
(后面会发现其实程序没有检测其内容,所以可以新建一个记事本文件,然后改名即可)
CTRL+F2重新开始调试。
输入注册名:4nil
注册码:WDW222226-346E696C
再注册一次。
然后重新运行程序,又在刚才的地方断了,呵呵,F8走,果然不跳了,说明他没验证我们写了
什么就监测了下是否有这个文件存在。
好了这样第二部分完成了。。。。。
哈哈,还没完呢 PART 3:功能完善
的确,现在软件不会再提示你注册了,但是当你使用里面的一个功能叫“将驱动制作成EXE安
装程序”的时候,制作出来的文件在安装的时候提示要注册,
当我们输入“WDW222226-346E696C”提示不正确。呵呵,那就继续破解。
我生成一个安装程序。
查出来是UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & Laszlo,
照样这样脱掉,OD载入,
运行后它的错误提示是中文的,我发现代码里面没中文,那我看看有没有英文,呵呵,发现如下
"Incorrect registration code, please verify.
Please Register, and then you may restore your
drivers"
肯定的错误提示拉,所以下个断,问我怎么找到的,呵呵,还是OD的字符串查看拉。
重新输入注册码,断了。
那我们看看上面点,有个字符串"WDW",这个不是我们那个的开头几位吗?下个断,重新输入注册码
断下
代码如下:
004635E0 . B8 5C3D4600 mov eax,NVIDIA_G.00463D5C ; ASCII "WDW"
004635E5 . E8 DE16FAFF call NVIDIA_G.00404CC8 //验证我们的注册码是否含"WDW"
004635EA . 85C0 test eax,eax
004635EC . 7E 3F jle short NVIDIA_G.0046362D
004635EE . 8D95 48FDFE>lea edx,dword ptr ss:[ebp+FFFEFD48]
004635F4 . 8B45 FC mov eax,dword ptr ss:[ebp-4]
004635F7 . 8B80 000300>mov eax,dword ptr ds:[eax+300]
004635FD . E8 AA66FDFF call NVIDIA_G.00439CAC //得到我们的假注册码
00463602 . 8B85 48FDFE>mov eax,dword ptr ss:[ebp+FFFEFD48]
00463608 . 50 push eax
00463609 . 8D95 44FDFE>lea edx,dword ptr ss:[ebp+FFFEFD44]
0046360F . B8 86170000 mov eax,1786 //这个是一个常数
00463614 . E8 CB55FAFF call NVIDIA_G.00408BE4 //转换成字符串“6022”
00463619 . 8B85 44FDFE>mov eax,dword ptr ss:[ebp+FFFEFD44]
0046361F . 5A pop edx
00463620 . E8 A316FAFF call NVIDIA_G.00404CC8 //验证我们的注册码是否含“6022”
00463625 . 85C0 test eax,eax
OK,这下知道了吧,你输入WDW6022就可以安装了,不过为了和我们刚才的注册码结合起来,我们
可以用这个WDW222226-346E696C6022。 总结一下:
用户名:4nil
注册码:WDW222226-346E696C6022
另外在注册前要在WINDOWS目录下新建一个文件叫“system.sys”.
完美破解,谢谢观赏。
------------------------------------------------------------------------
【破解总结】
注册码是通用的,所以注册机也不写,不过算法很简单的。可以自己看看。
------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)