吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2161|回复: 35
收起左侧

[原创] Studio 3T 2024.2.0 [JAVA] 逆向分析,跨平台通杀

  [复制链接]
Vvvvvoid 发表于 2024-4-24 20:51
本帖最后由 Vvvvvoid 于 2024-11-16 17:30 编辑

关于(Studio 3t 2024.2.0)

studio 3t是一款能够有效让数据库的管理进行更好的可视化工具,又称Robomongo  ;
是由MongoDB客户端Studio 3T的开发人员维护和提供的,适用于Windows,MacOS和Linux的跨平台。

环境

  • IDEA
  • JDK 17
  • jadx

前记

似乎翻遍了 Google 也没找到Studio 3t新版的 hack 版; 所以今天试着看了下;
而且, 在不搞点 JAVA 的东西, 别人都不知道我是干 JAVA 的了....

分析

免费版会少很多功能, 菜单也是精简过的; 如下图所示

0.png

通过抓包发现软件在用户登陆后,会发送一个请求接口来获取当前用户的凭证信息

1.png

GET /s3t-api/usage-token

注意看请求 body,可以看到目前 license 状态目前是过期的

"trialStatus": "LICENSE_EXPIRED'

接口返回如下:

{
  "certificateChain": [
    "xxxx"
  ],
  "serverTokens": {
  },
  "usageToken": "xxx"
}

返回有一堆加了密的东西, 看着头疼;

我们用 jadx 全局搜索下 classpath [/Applications/Studio 3T.app/Contents/Resources/app/*.jar] 所有的 jar
跟踪一下这个请求的上下文

2.png

定位到了 data-man-mongodb-ent-2024.2.0.jar 这个 jar 包;

分析代码:

yjsj cS = cS();
jsonObject.addProperty("trialStatus", cS.cc);

接着进入 当前类的 cS() 方法,看看 yjsj cS 具体的实现

3.png

295 行可以看到 yjsjVar.cc = n_trVar2.getStatus().ay().name();

然后我们在继续跟进,看看 getStatus() 方法

4.png

定位到这里 t3.common.c.h.n_tr.getStatus() , 稍微有些眉目了;
我们试着改改这个方法.让他直接返回第 433 行的 Your trial license expires in %d days

重写

打开 IDEA 新建一个 JAVA Project;
Studio 3T 用的 JDK 为 17, 我们也用 17;
把 classpath [/Applications/Studio 3T.app/Contents/Resources/app/*.jar] 所有的 jar 添加到我们依赖中
然后把 n_tr 的假码 copy 一份进去;

开始改造:

  1. 把 423 行的俩个函数 (dy() || dK())  返回值改为 return true; // 这俩个是判断 license 是否过期的
  2. 把 426 行的函数 (dA()) 返回值改为 return false; // 这个函数是判断 license 是否禁用
  3. 把 432 行的函数 dG() 返回值改为 30; // 这个看起来是使用到期天数
 public boolean dy() {
        return false;
    }

 public boolean dK() {
        // if (this.cK) {
        //     return true;
        // }
        // if (this.cP == null) {
        //     this.cP = dJ();
        // }
        // int epochDay = (int) (this.cP.toEpochDay() - t3.utils.j.GnBN.aQn().toEpochDay());
        // if (epochDay < 0 || epochDay > 35) {
        //     j(true);
        //     c((LocalDate) null);
        //     return true;
        // }
        return false;
    }
 public boolean dA() {
        return false;
    }

public int dG() {
        // if (null == this.cP) {
        //     return 0;
        // }
        // int epochDay = (int) (this.cP.toEpochDay() - LocalDate.now().toEpochDay());
        // if (epochDay >= 1) {
        //     epochDay++;
        // }
        // int max = Math.max(0, Math.min(dI(), epochDay));
        // if (this.cK) {
        //     return 0;
        // }
        return 30;
    }

改造完之后编译, 生成 t3.common.c.h.n_tr.class  ;
之后压缩软件打开 data-man-mongodb-ent-2024.2.0.jar 替换之

5.png

移除签名认证

然后重启, 发现程序启动不了, 用命令行重启, 发现一下报错;

6.png

看来程序有文件完整检测;
要关闭也很简单, 把 这个 jar 包 META-INO 下的签名信息删掉就可;

7.png

删掉后, 继续重启, 这个时候程序进来了, 但是弹出一个对话框之后就退出去了;

8.png

看来签名没有彻底关闭 ; 我们搜索下关键字 Please re-install

9.png

定位到了 hbwp的 e 方法, 看了下, 这个函数会教研所有jar 的 签名, 如果签名不存在也会报错;
跟之前的处理办法一样, copy 改造;

    public static void e(URL url) {
        if (cZ) {
            return;
        }
        // 这里删除掉所有签名验证的代码;
        cZ = true;
    }

然后继续, 编译, 覆盖,重启, 成功拿下

11.png

lastt.png

Release

编译后的 class 文件, 以及脚本已放 Github:

https://github.com/marlkiller/studio_3t_patch

后记

仅供研究学习使用,请勿用于非法用途
注:若转载请注明来源(本贴地址)与作者信息。

免费评分

参与人数 8威望 +1 吾爱币 +29 热心值 +8 收起 理由
笙若 + 1 + 1 谢谢@Thanks!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
fancyjianghua + 1 + 1 鼓励转贴优秀软件安全工具和文档!
alanhays + 2 + 1 大佬tql
cyhlnj + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
chinawolf2000 + 1 + 1 热心回复!
为之奈何? + 1 + 1 我很赞同!
Millet_Lok + 2 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

无敌小儿 发表于 2024-4-25 15:27
Vvvvvoid 发表于 2024-4-25 15:16
是的, 混淆过的代码, 太恶心了,不想费劲折腾了

t3.zip (6.27 KB, 下载次数: 4)
大佬,我照着您的步骤编译了下没有成功,方便了给看一下错在什么地方了,给指点指点
请叫我QS 发表于 2024-6-6 17:21
Vvvvvoid 发表于 2024-6-5 18:58
有个空指针要处理;
参考:
https://github.com/marlkiller/studio_3t_patch/tree/main/out/2024.2.0/t3

解决了,原来第二次进入能看得到报错的日志,获取体验截止时间的LocalDate报npe, 直接给它设个30天了
狂侠先森 发表于 2024-4-24 21:16
↗神奇、宝贝↘ 发表于 2024-4-24 22:01
这玩意儿好用吗?
songxp03 发表于 2024-4-24 22:08
这软件感觉比navicat好使
 楼主| Vvvvvoid 发表于 2024-4-24 22:13
songxp03 发表于 2024-4-24 22:08
这软件感觉比navicat好使

mongodb 这种细分领域, 还是这个强
xixicoco 发表于 2024-4-24 22:58
这个软件不错,感谢这么详细的分析
SGC沉默 发表于 2024-4-24 23:32
大师是依据的几千年大数据
Lty20000423 发表于 2024-4-25 07:41
真的太强大了
tianmenghuan 发表于 2024-4-25 07:48
强大   支持 支持  
WilsonZtw 发表于 2024-4-25 09:54
大佬  iOS 逆向有相关的资料学习吗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 15:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表