好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 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 函数逻辑
TestLicense 为代号: 68
DemoVersion 为代号: 69
FullVersion 为代号: 70
强迫无论任何的授权状况都是回传 FullVersion 的授权, 故将最後的 68 与 69 更改为 70 後导出新的文件
改好之後再重新载入一次新的文件, 逆出来的代码应该就是正确的了
2. 去除主程序 CheckHostPro.exe 对已补丁 License.dll 的校验
修改完上述的 dll 文件後再替代, 会发现主程序会检测到修改并强制关闭 ..
这时得额外去除主程序的一些验证逻辑如下:
Operators.CompareString 方法
在已混淆的类别名称中找到 h 类底下的 p 函数, 把最後的 ldc.i4.0 更改成 ldc.i4.1
这个时候再次加载新的 dll 文件便不再跳出验证错误的窗口, 但整个主程序也崩溃了, 最後再修复一处即可
3. 修正主程序 CheckHostPro.exe 检查授权的逻辑代码
找到同类别底下的 b 函数, 把一个验证的逻辑爆破掉:
brfalse.s 修正成 brtrue.s 的逻辑, 搞定
不算是最完美的破解, 但至少没有那些恼人的提示窗和天数限制了 |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|