GoodSync破解

GoodSync 简介

GoodSync 是一个很好用的文件同步工具,可以同步本地的目录,也可以将数据同步到另外一台计算机。免费版可以使用完整功能,有30天的限制,30天后同步任务不能超过3个,同步文件数量不能超过100。

破解思路

破解过程,主要参考了帖子:https://www.52pojie.cn/thread-533013-1-1.html

先说下大概思路,收费版本有个标志,是0x4000,满足该标志时跳转到企业版(ENTERPRISE)的功能。原帖中,是将跳转前给标志赋值,我这里改动后,有时好使,有时候不好使,具体原因不明,可能是版本更新加入了新的检查,所以稍加改动,找到写入该标志的变量位置,这里赋值为0x4000,功能都正常了,暂时没发现问题。

详细过程

因为我这里安装的是64位的版本,所以要用x64dbg调试。断在程序入口后,搜索关键字“ENTERPRISE”:

5f6088e8-66a6-41f0-b1cd-3caa19441f4f.png

然后找到[rax + 4]的位置,下硬件写入断点,然后重新运行:

19bcff80-73d7-4d06-8fa6-7d6a6cdba268.png

这里会来两次,应该是用于初始化变量,再F9:

c3c7c101-dbb5-4026-8d45-8cb3fdcc30ee.png

这里将ecx传给[rax + 4],此时将ecx赋值为0x4000,再进行后续的判断,就变为企业版了,先将

1
mov dword ptr ds:[rax+4],ecx 

改为跳转到一块空白的地址:

a1055c77-8bf7-4ada-8210-a386e2c8b82d.png

再将新地址写入汇编

1
2
3
mov ecx,4000 
mov dword ptr ds:[rax+4],ecx
jmp goodsync-v10.140523429

0dfd3759-bd52-4d38-bcff-96557dfa78fe.png

这样就完成了破解。

题外话

原帖给程序打补丁时,为了保存寄存器环境,用到的pushadpopad指令,x64中不支持这两条指令,如果有需要,只能手动挨个保存寄存器。
详见 Intel 手册《64-ia-32-architectures-software-developer-manual-325462》— “PUSHA/PUSHAD—Push All General-Purpose Registers”章节:
816b86f1-0a13-4dad-bd13-08972698797f.png