excel量级不够,微软的轻量级数据库access总是莫名出错,于是用了mysql来进行。
需要用到某款优秀的可视化数据库客户端来从文本文件导入数据库,并使用sql进行分析。
所以就去官网下载,当前最新的版本是Nxxxxxx17。
昨天提示过期了,只能免费试用14天。
有个帖子提到了把注册表信息删掉就能继续试用了,但我们既然喜欢从技术角度入手,就总想对exe逆向分析一下。
此文仅为技术分析,请读者们不要侵犯软件的商业版权。
技术分析过程如下:
先用x64dbg载入主程序,运行到弹出已超期的窗口时看看堆栈。
15.png (728.26 KB, 下载次数: 0)
下载附件
2024-11-30 16:59 上传
今天是11月30日,显示到期时间12月14日却已过期是因为我昨天急着用,就删了注册表先用着了,造成试用期未满。
所以把系统日期改成12月份来达到超出试用期的效果。
试用期内是“试用”按钮,试用期外是“退出”按钮。
从右下角的堆栈里看到最近出栈的是一个叫authentication_dialog_ask的东东。这个从名称上看应该是和授权认证相关的互动函数。
右键从它身上跳转到CPU里的代码。
[Asm] 纯文本查看 复制代码test al,al
jne navicat.394A63D
在jne指令上下个断点,重新运行程序,中断在这里之后试着把CPU的ZF寄存器的值翻转一下(双击绿色箭头的ZF寄存器处),意思是让test比较(与操作)的结果和实际相反。
然后点退出按钮,果然没有执行下面第6行的jmp跳转命令,而是进入了软件。如图:x64dbg窗口后面就是软件的界面。
17.png (223.88 KB, 下载次数: 0)
下载附件
2024-11-30 17:15 上传
试了试软件功能,一切正常。官网有说明:试用版也是全功能的。所以从理论上来说,破解已经完成了,也就改一个跳转的事。
但每次启动软件都跳出来个窗口说过期了也怪烦的,虽然这个窗口的退出功能已经被取消了。
那试着找一下弹出这个窗口的指令吧。
把操作系统的时间从12月份改回当前时间,软件又回到了试用期内,在弹出这个窗口之后看看堆栈。
06.png (667.74 KB, 下载次数: 0)
下载附件
2024-11-30 17:23 上传
10.png (180.91 KB, 下载次数: 0)
下载附件
2024-11-30 17:23 上传
这个应该比刚才找到的那个地方位置更靠前,所以把堆栈的出栈情况向上翻一点,看到了一个L“showTrialDialog”,从它身上右键,点“在反汇编中转到指定QWOD“跳到CPU里对应的指令看了看,没看出什么来。
堆栈再往上分析,出栈的又是一个authentication_dialog_ask,刚才就是它,这次八成还是它,从它身上右键跳到CPU里看看:
指令如上图所示:
[Asm] 纯文本查看 复制代码test eax,eax
jne navicat.325151C
mov rax,qword ptr……
mov rcx,qword ptr……
call ……
jmp ……
多么熟悉的节奏啊!可以跟刚才一样在jne指令下断点,不过这次我在段首push那里下了断,想一步一步执行着看看。
重新运行,断点中断之后按F8单步运行,果然,call了一个函数之后弹出窗口。
再重新单步运行到jne,翻转一下ZF寄存器的标志,果然,没弹出提示窗口,而是直接进入了软件界面。
比较一下下面这两张图,就差一个call函数。call之前是等待界面,call之后弹出了窗口。
12.png (518.9 KB, 下载次数: 0)
下载附件
2024-11-30 17:33 上传
08.png (509.14 KB, 下载次数: 0)
下载附件
2024-11-30 17:59 上传
接下来简单了,把今天找到的两处jnz都改成jmp,用x64dbg的补丁功能生成navicat1.exe,最好别覆盖之前的官方navicat.exe原文件。
妥了。
18.png (244.42 KB, 下载次数: 0)
下载附件
2024-11-30 17:56 上传
基本上技术分析就结束了,至于说软件启动时的等待窗口还有个“未注册”的字样,以及进入软件之后菜单里点“关于”也会显示未注册,这个都是美观问题,不影响任何功能,就不在此次技术分析的主题赘述了。