Crack a software
条评论很久没搞过破解了。最近有需要,所以来练练手,破解了兄弟萌也好使用。
IDA 打开看一眼, 调用了很多 win API 。
过运行环境检查
软件从光盘启动,会判断自身启动的位置。用 windbg 运行程序进行调试,找到判断启动位置的代码。
如何找呢?
因为不清楚它代码怎么写的,只能凭经验猜它会使用到什么样的 win API。
可能是:GetCurrentDirectory,GetModuleFileName,GetDriveType …
最终用 windbg 把疑似的点都打上断点。来跑一下,最终命中的函数是:GetDriveType
1 | //声明: |
上层逻辑如下。
改一下代码就可以过这个检查。
密码校验
密钥校验似乎复杂了些。我开始走了些弯路,我想找到密码校验的算法,如下图。被我找到了。
它的逻辑是在调用另一个 dll 来做密码这一块处理。而且密码是动态验证的,一段时间就会失效。
我最初竟然想破解它密码是怎么计算的。很明显,这个不太可能。
换个方向,观察它密码算出来之后的去处,最后在某一次找到比对的逻辑。
这里的 if 干了一件事:不为 1 则出错,设置为 1 则进入系统。
那么干掉这个 if 就可以了。