Navicat 12.1.22(32bit) For Windows动态调试分析

1.使用Exeinfo查看navicat.exe文件信息,程序由Delphi 2013编写。

 

Delphi程序编写的程序有一个特点就是使用主程序框架作为入口,一般命名中都会包含“MainForm”的字样,当然不全是,也有个案,到这里,我们应该就会有一个思路,就是能否搜索该字符串来找到调用主程序的位置。

2.使用x64dbg(32bit)加载navicat.exe文件,点击运行按钮,直到出现程序窗口。

此时使用字符串搜索功能搜索“MainForm”,找到三个位置,一一打开查看,最后确定主程序调用位置如下图所示:

 

向上撸代码,主要关注跳转位置,在关键的几个跳转设置好断点,动态调试的目的是:使程序流程不跳过“TnavicatMainForm”这个位置,调试过程中,可以切换ZF标志位的值来设置是否跳转,通过动态调试,确定以下patch位置及方法。

01688ECA:75->EB
01688F58:7C->EB
01688FA1:74->EB
01688FB8:75->90
01688FB9:23->90
01688FD3:74->90
01688FD4:08->90

 

3.这样patch后,仍热会有注册窗口的提示,下一步我们尝试如何去掉注册窗口。

这一步使用ollydbg(吾爱破解版)的中文字符串搜索功能,可以搜索类似注册试用激活等字样,搜索英文字符串“trial”“registration”“activate”等,得到下面如图位置的几个窗口调用。

将其中的jne改成jmp即可跳过这些窗口的调用,patch如下:

0162D51C:75->EB
0162D543:75->EB
0162D56A:75->EB
0162D58E:75->EB
0162D5B5:75->EB
0162D5D9:75->EB

4.通过wireshark抓包发现,软件启动后开始需要验证NTP服务器时间,判断是否超过试用期限,连接的域名为“pool.ntp.org”,通过使用strings命令(strings -a *|find “ntp”)发现这个字符串在“libcc.dll”中出现,通过x64dbg动态调试(需要运行一下程序)过滤下字符串发现下图,更改方法如图所示:这样做提高了软件的启动效率,地址是随机的,所以不提供patch代码了。

64bit需要更改libcc.dll跳转的位置如下图所示:(需要运行一下程序才可以过滤到字符串“pool.ntp.org”

5.64bit版本的破解方法和32bit一致,patch方法如下:

 

0000000002144E80:75->EB
0000000002144EB7:75->EB
0000000002144EEE:75->EB
0000000002144F25:75->EB
0000000002144F61:75->EB
0000000002144F95:75->EB
00000000021E2B40:75->EB
00000000021E2BCE:7C->EB
00000000021E2C27:74->EB
00000000021E2C40:75->90
00000000021E2C41:2D->90
00000000021E2C63:74->90
00000000021E2C64:0A->90

 

6.下一步我们来制作补丁,本例使用的是Baymax Patch Tool

我的思路是先使用x64dbg将需要patch的位置都修改成对应的新字节数据,也可以使用之前导出的1337补丁文件。然后保存成一个新的navicate1.exe文件,再使用Baymax Patch Tool比较navicat.exe和这个新的exe文件这两个文件不同的字节数据,直接生成patch工具。

如图所示:

然后创建补丁:

 

7.以下是x64dbg的1337补丁代码,仅供参考,因为在win10需要关闭ASLR才可以对应下面的地址。

>libcc.dll
00000000009E9B7B:74->EB
00000000009E9B7C:3F->55

>libcc.dll
008AB08E:77->EB

>navicat.exe
0000000002144E80:75->EB
0000000002144EB7:75->EB
0000000002144EEE:75->EB
0000000002144F25:75->EB
0000000002144F61:75->EB
0000000002144F95:75->EB
00000000021E2B40:75->EB
00000000021E2BCE:7C->EB
00000000021E2C27:74->EB
00000000021E2C40:75->90
00000000021E2C41:2D->90
00000000021E2C63:74->90
00000000021E2C64:0A->90

>navicat.exe
0162D51C:75->EB
0162D543:75->EB
0162D56A:75->EB
0162D58E:75->EB
0162D5B5:75->EB
0162D5D9:75->EB
01688ECA:75->EB
01688F58:7C->EB
01688FA1:74->EB
01688FB8:75->90
01688FB9:23->90
01688FD3:74->90
01688FD4:08->90 
posted @ 2019-09-17 20:26  heycomputer  阅读(480)  评论(0编辑  收藏  举报