本帖最后由 52HB 于 2024-06-09 17:00 编辑
破解的是sqlyog目前最新版本的试用版,目标是无限的试用期. 准备 一个已经过了试用期的sqlyog,一个可以调试64位程序的调试器。 在打开后可以看到的是直接就弹出了这样一个框框 ![](/images/article/ba6bd870-02bf-41fd-8ebb-32029c79ceb4.png)
看到这一没有注册那么这个软件开始试用的日期不会存在服务器里,而考虑到软件开发者希望卸载了软件试用期不会刷新那么肯定会存在某一个地方。要么是注册表要么创建个数据文件丢在系统盘。同时在试用期可以发现这个试用版有着大部分所需要的功能,具有破解的价值。 接下来就是开始动态调试。 首先拖进调试器,可以发现这程序没壳。那么就只需要找到关键函数就好。我优先考虑的是通过注册表方式存取当前时间那么作为一个64位程序应该会调用RegQueryValueExW函数,而这个函数通常需要提供由RegCreateKeyEx获取的句柄,那么如果不对常量区加密那么一定会有注册表项的名称出现。在一阵枚举后便可以发现定位到这一注册表路径后 ![](/images/article/6c1efeca-e709-4134-8893-5b0d9768ae6b.png)
便是打开注册表编辑器验证是不是如我们所想一般在打开后可以看到如下两个注册表项 ![](/images/article/8da39c8f-91c9-4a13-9c51-095ef1508a17.png)
,在编辑器中分别搜索对应的字符串并在后面调用了RegQueryValueExW函数的字符串处和下断点在第一次运行后可以看到来到了取注册表项lnD110处的函数。在此处通过RegQueryValueExW的声明可以知道数据表项的参数中有指向接收值数据的缓冲区的指针。在完成调用后我们可以发现如下的指针指向的内存地址被写入了注册表项的值 ![](/images/article/c2e033ff-c729-4823-9300-451e9179186c.png)
之后便是动态调试在分析由前面得知的rsp+0x64这一块内存中数据的操作情况可以分析出数据经历了以下的阶段 ![](/images/article/af5ebda1-1fe7-41f8-b1c9-89b8cc18ccfe.png)
可以看到在对取值后的数据解密后会将数据复制给rbx指向的内存地址中暂存。而且如果解密后的值为负数那么视为0.考虑到这十分有嫌疑的操作。便在赋值完成后修改下这块地方看看效果。我才去的修改方式如下图所示从 ![](/images/article/568d8581-f14e-4438-8524-469736ce86d4.png)
到 ![](/images/article/d62c6fcb-51b7-4809-9579-2652e52d6e05.png)
。在修改完成后直接F9运行,效果如下 ![](/images/article/73886ea3-816e-406a-b82c-ff722b97d768.png)
,可以看到功能正常未受影响,无限试用期实现
注:若转载请注明大神论坛来源(本贴地址)与作者信息。
|