-
-
[原创]简单破解某优秀的可视化数据库客户端最新版的技术分析
-
发表于:
2024-12-1 21:37
1961
-
[原创]简单破解某优秀的可视化数据库客户端最新版的技术分析
前阵子要分析一个从GDELT下载的2.2G的文本文件,每行由60多个字段组成,文本文件有数亿行。
excel量级不够,微软的轻量级数据库access总是莫名出错,于是用了mysql来进行。
需要用到某款优秀的可视化数据库客户端来从文本文件导入数据库,并使用sql进行分析。
所以就去官网下载,当前最新的版本是Nxxxxxx17。
昨天提示过期了,只能免费试用14天。
有个帖子提到了把注册表信息删掉就能继续试用了,但我们既然喜欢从技术角度入手,就总想对exe逆向分析一下。此文仅为技术分析,请读者们不要侵犯软件的商业版权。
技术分析过程如下:
先用x64dbg载入主程序,运行到弹出已超期的窗口时看看堆栈。
今天是11月30日,显示到期时间12月14日却已过期是因为我昨天删了注册表,造成试用期未满,所以把系统日期改成12月份来达到超出试用期的效果。
试用期内是“试用”按钮,试用期外是“退出”按钮。
从右下角的堆栈里看到最近出栈的是一个叫authentication_dialog_ask的东东。这个从名称上看应该是和授权认证相关的互动函数。
右键从它身上跳转到CPU里的代码如下:
1 2 | test al,al
jne navicat. 394A63D
|
在jne指令上下个断点,重新运行程序,中断在这里之后试着把ZF寄存器的值翻转一下(双击绿色箭头的ZF寄存器处),意思是让test操作的结果和实际相反。
然后点退出按钮,果然没有执行下面第6行的jmp跳转命令,而是进入了软件。如图:x64dbg窗口后面就是软件的界面。
试了试软件功能,一切正常。官网有说明:试用版也是全功能的。所以从理论上来说,破解已经完成了,也就改一个跳转的事。
但每次启动软件都跳出来个窗口说过期了也怪烦的,虽然这个窗口的退出功能已经被取消了。
那试着找一下弹出这个窗口的指令吧。
把操作系统的时间从12月份改回当前时间,软件又回到了试用期内,在弹出这个窗口之后看看堆栈。
这个应该比刚才找到的那个地方位置更靠前,所以把堆栈的出栈情况向上翻一点,看到了一个L“showTrialDialog”,从它身上右键,点“在反汇编中转到指定QWOD“跳到CPU里对应的指令看了看,没看出什么来。
堆栈再往上分析,出栈的又是一个authentication_dialog_ask,刚才就是它,这次八成还是它,从它身上右键跳到CPU里看看:
指令如下:
1 2 3 4 5 6 | 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之后弹出了窗口。
把今天找到的两处jnz都改成jmp,用x64dbg的补丁功能生成navicat1.exe,最好别覆盖之前的官方navicat.exe原文件。
基本上技术分析就结束了,至于说软件启动时的等待窗口还有个“未注册”的字样,以及进入软件之后菜单里点“关于”也会显示未注册,这个都是美观问题,不影响任何功能,就不在此次技术分析的主题赘述了。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)