MacOS 高颜值的 数据库客户端工具 Tableplus 简单逆向分析

0x0

navicat 给公司发律师函了, 所以不能白嫖了..
后来一直在找替代品, 但均感觉略有不足.
dbeaver : java 开发的, 依赖 jdk , 而且BUG较多,也不流畅
mysqlworkbench : 官方出品, 功能强大. 但是用着不带劲
Sequel Ace : 开源免费, 但是只支持mysql,功能简单

最后试了下 Tableplus , 感觉还不错. 颜值高, 支持的协议多,跨平台.
免费版有很多限制, 所以今天试了简单逆向了下..

0x1

环境:
Tableplus Version 5.3.8 (500) (TablePlus | Modern, Native Tool for Database Management)
ida64
hopper

0x2

免费版有如下限制, 我们可以从这些关键字入手

  1. 只能打开俩个查询Tab页
  2. 只能打开俩个窗口
  3. 只能添加俩个where条件

hopper 搜索 str "Free Trial limited 2" , 定位到这些str的内存地址

 复制代码 隐藏代码
__cstring:00000001006BF130      00000020        C       Free Trial limited 2 workspaces
__cstring:00000001006C74D0      0000001A        C       Free Trial limited 2 tabs
__cstring:00000001006CC220      0000001D        C       Free Trial limited 2 filters

0x3

分析0x2的第一个变量地址, 查看引用.这里有三个引用, 先看第一个.
进入到函数首 , 看到这块有个关键跳转.

在这里下断,然后依次增加tab 页 ,分析得出以下结论

 复制代码 隐藏代码
call       sub_1002a56b0  ;  sub_1002a56b0 这个函数应该是取当前tab页数量,复值给 rax
cmp        rax, 0x2 ; 将 rax 与 2 做比较, 这里的 2 就是限制条件
mov        qword [rbp+var_38], r13
jl         loc_1000c17c1 ; rax<2 是跳转成立, 否则会执行弹框

这里要爆破就很简单了,

 复制代码 隐藏代码
jl         loc_1000c17c1 > jmp         loc_1000c17c1.

至于另外俩个关键字也是一样的方式..

 复制代码 隐藏代码
## -----------
__cstring:00000001006BF130      00000020        C       Free Trial limited 2 workspaces

__text:00000001000C16EB cmp     rax, 2
__text:00000001000C16EF mov     [rbp+var_38], r13
__text:00000001000C16F3 jl      loc_1000C17C1 , jl > jmp

## -----------
__cstring:00000001006C74D0      0000001A        C       Free Trial limited 2 tabs

__text:00000001001F90C2 cmp     rbx, 2
__text:00000001001F90C6 mov     r13, r15
__text:00000001001F90C9 jl      loc_1001F9184 , jl > jmp

## -----------
__cstring:00000001006CC220      0000001D        C       Free Trial limited 2 filters

__text:00000001002EA3E0 cmp     r14, 2
__text:00000001002EA3E4 mov     [rbp+var_58], r13
__text:00000001002EA3E8 jl      loc_1002EA4AE , jl > jmp

0x4

用 ida 修改 jl > jmp .
然后保存 (不用 hopper 修改是因为穷)

保存完之后记者重新加签

 复制代码 隐藏代码

target_app=/Applications/TablePlus.app
sudo xattr ${target_app}

# 删除签名
sudo xattr -r -d com.apple.quarantine ${target_app}
sudo xattr -cr ${target_app}

# 重新签名。
sudo codesign -f -s - --deep ${target_app}

猜你喜欢

转载自blog.csdn.net/m0_60961651/article/details/131224190#comments_28353341