Chris.Lin 发表于 2013-1-28 07:23

一个菜鸟的处女作 - 破解以 VB.NET 为框架的 CheckHostPro 程序

本帖最后由 Chris.Lin 于 2013-1-28 07:33 编辑

写在前头:

这本来是被我发在 '悬赏问答区' 来寻求破解分析的思路

但後来乾脆自己动手试看看, 也算是误打误撞吧, 便成功暴力突破了这款程序的注册限制了

另外我是台湾 ASP.NET 的程序员, 从来都没有破解过一个软件的经验, 若文中有些单字和各位朋友的认知有出入, 请海涵

本次算是自问自答的处女作, 过程中只有凭着直觉丶不断地谷歌和错误的尝试才成功

希望各位能提供更好的方案互相切磋切磋
主程序: Check Host Pro

采用了同为自家所开发的注册保护系统 SolidLicense .NET

破解工具: .NET Reflector, Reflexil

OK, 直接用 .NET Reflector 进去看他的算法 ..

发现主程序和 License.dll 都被用 Dotfuscator 混淆过代码了

目前已知这个注册系统会自动写到注册表 HKEY_CURRENT_USER\Software\Reinhold Software Services\RSS SolidLicense

以下为破解的步骤:

1. 修改 License.dll 的 getLicenseMode 函数逻辑

http://i.imgur.com/EYvn6fC.png

TestLicense 为代号: 68

DemoVersion 为代号: 69

FullVersion 为代号: 70

http://i.imgur.com/ZTtnmB7.png

强迫无论任何的授权状况都是回传 FullVersion 的授权, 故将最後的 68 与 69 更改为 70 後导出新的文件

http://i.imgur.com/LIjFpeb.png

改好之後再重新载入一次新的文件, 逆出来的代码应该就是正确的了

2. 去除主程序 CheckHostPro.exe 对已补丁 License.dll 的校验

http://i.imgur.com/yARRCP0.png

修改完上述的 dll 文件後再替代, 会发现主程序会检测到修改并强制关闭 ..

http://i.imgur.com/2sSsRFB.png

这时得额外去除主程序的一些验证逻辑如下:

http://i.imgur.com/ZvBINsp.png

Operators.CompareString 方法

在已混淆的类别名称中找到 h 类底下的 p 函数, 把最後的 ldc.i4.0 更改成 ldc.i4.1

http://i.imgur.com/qrF69KW.png

这个时候再次加载新的 dll 文件便不再跳出验证错误的窗口, 但整个主程序也崩溃了, 最後再修复一处即可

3. 修正主程序 CheckHostPro.exe 检查授权的逻辑代码

http://i.imgur.com/qgZ6PN4.png

找到同类别底下的 b 函数, 把一个验证的逻辑爆破掉:

http://i.imgur.com/RTsGsB8.png

brfalse.s 修正成 brtrue.s 的逻辑, 搞定

http://i.imgur.com/Kyeq5m6.png

http://i.imgur.com/wjZOR8Y.png

不算是最完美的破解, 但至少没有那些恼人的提示窗和天数限制了

小雨细无声 发表于 2013-1-28 07:34

膜拜,很详细了,可是看不懂.

娿丶怖娃娃 发表于 2013-1-28 08:24

此贴会火、前排观看!嘻嘻..

a334715874 发表于 2013-1-28 08:29

有些地方还是不太明白呢``

梦…… 发表于 2013-1-28 08:32

看不太明白,但能够和谐就是好。

sheepccoco 发表于 2013-1-28 08:47

看不太明白。

wjsbsjs 发表于 2013-1-28 09:45

学习了 ~~

297044530 发表于 2013-1-28 09:50

好东西啊 ,收藏学习了

鬼炙 发表于 2013-1-28 09:56

祝楼主更加强壮加油吧!

bingbing5353 发表于 2013-1-28 10:01

楼主已经迈出了第一步,加油.
页: [1] 2 3
查看完整版本: 一个菜鸟的处女作 - 破解以 VB.NET 为框架的 CheckHostPro 程序