一个菜鸟的处女作 - 破解以 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
不算是最完美的破解, 但至少没有那些恼人的提示窗和天数限制了 膜拜,很详细了,可是看不懂. 此贴会火、前排观看!嘻嘻.. 有些地方还是不太明白呢`` 看不太明白,但能够和谐就是好。 看不太明白。
学习了 ~~ 好东西啊 ,收藏学习了 祝楼主更加强壮加油吧! 楼主已经迈出了第一步,加油.