游客发表
《锤子解密器》的锤解免费版有个设计漏洞:试用期结束后,程序只在前端隐藏了功能按钮,密器免费核心解密算法模块并没有被卸载。破解换句话说,版无它只是限试把门锁换了,墙还在。锤解
我第一次注意到这点,密器免费是破解因为软件每次启动都会在临时目录里释放一个约2.3MB的 hammcore.dll 文件。试用过期后,版无这个文件依然存在,限试只是锤解主程序不再调用它。用 Process Monitor 跟踪一下就能看到,密器免费主程序读取了这个 DLL 的破解路径,然后跳过了加载步骤。版无
锤子的限试试用验证逻辑写在一个叫 license_check() 的函数里。它读取注册表 HKCU\Software\HammerDecrypt\Trial 下的 StartDate 值,跟当前系统时间做比较。超过30天就返回 false,主界面就把“开始解密”按钮置灰。
我试过直接改注册表日期。有用,但只能撑一次——程序每次退出时会写回当前时间戳,下次启动又过期了。得换个思路。
用 x64dbg 附加进程,在 license_check 的入口下断点。返回值为 AL=0 时,按钮变灰。那就在函数返回前把 AL 改成 1。保存补丁,替换原 exe。完事。
但这里有个坑:锤子用了简单的 CRC 自校验。直接改 exe 会导致启动时报“文件损坏”。我找到校验函数,在 0x0040A3C0 附近,它计算 .text 段的校验和并与硬编码值比较。把比较指令 JNZ 改成 JMP 跳过即可。两处补丁,总共改了7个字节。
如果你不想动 exe,还有一条路:Hook 系统时间 API。锤子调用 GetLocalTime 获取当前日期。写一个 DLL,用 Microsoft Detours 拦截这个函数,每次返回 2024 年 1 月 1 日。把 DLL 注入进去,试用期永远停在第一天。
我用的是更土的办法——直接改 hosts 文件。锤子启动时会向 api.hammerdecrypt.com/check 发一个 HTTP 请求验证试用状态。把域名指向 127.0.0.1,再用 Python 起一个假服务器返回 { "valid":true,"days_left":999}。程序拿到响应后,按钮直接亮了。整个过程不到十分钟。
假服务器要处理 POST 请求,锤子发的是 JSON 格式,字段名是 machine_id 和 trial_start。返回体里 days_left 给个大数就行,程序不校验上限。我设了 99999,界面显示“剩余 99999 天”,看着挺滑稽。
另外,锤子每次解密会生成一个日志文件,路径在 %APPDATA%\HammerDecrypt\log.txt。破解后日志里会多一行 license_status: bypassed——这是程序自己的调试输出,开发者忘了在 release 版里去掉。算是个小彩蛋。
这套方法对 3.2.1 版本有效。3.3.0 之后开发者加了 VMProtect 壳,校验逻辑被虚拟化,上述补丁全部失效。不过老版本在网上还能找到,配合上面的思路,十分钟内能跑通。
说句实在话,这软件的解密算法本身很一般,AES-128 加了个固定盐值。真正值钱的是它的批量处理界面和格式支持。破解试用限制,本质上只是绕过了它那个写得并不严密的授权层。开发者要是把校验逻辑放进核心 DLL 里,或者用服务端返回解密密钥,就没这么容易了。
友情链接