夜雨聆风学习资料网

ARTICLE · 1163524

第一次用 AI 逆向软件:从一句话,到一个能启动的 MySQL 客户端

第一次用 AI 逆向软件:从一句话,到一个能启动的 MySQL 客户端

如果你把一个软件的安装路径交给 AI,它能看懂里面有什么吗?

再进一步,它能不能根据分析结果,帮你做出一个功能类似的应用?

这次,我拿电脑里安装的 DBeaver 做了一次实验。

开始时,我只是想看看:一个小白第一次用 AI 做逆向分析,到底能走到哪一步?

最后,电脑上多了一个能启动的 MySQL 桌面客户端。

不过,这个过程最值得分享的,是 AI 做到了什么,以及哪些地方还需要继续验证。

第一步:我只给了它一个安装路径

我已经安装了 REA,随后对 AI 说:

我已经安装了 rea,帮我逆向解析 D:\Program Files\DBeaver

没有准备源码,也没有告诉它应该分析哪个文件。

这里的“逆向”,可以简单理解成:从已经安装好的软件出发,研究它由哪些部分组成、主要功能是怎样连接起来的。

对普通用户来说,一个软件可能就是桌面上的图标。

但对 AI 来说,安装目录里的启动配置、插件、资源和编译后的代码,都是可以研究的线索。

这次,它先检查了工具的使用说明,再读取 DBeaver 的安装结构。

过程也并非一路顺畅:最初,本地读取工具连续超时;后来换用获批的命令,才成功拿到文件内容。

这让我感受到,AI 做这类任务,也需要处理环境、权限和工具问题。

第二步:它真的从安装包里找到了东西

分析结果显示,我安装的是 DBeaver 26.0.5。

它采用 Java、Eclipse 插件体系和 SWT 桌面界面。安装目录里,顶层共有 362 个 JAR 文件。

你可以把 JAR 粗略理解成 Java 程序的代码和资源包。

AI 随后整理了插件清单、文件哈希、扩展声明和类清单,还解析了 10 个关键类的字节码。

“字节码”听起来很专业,其实可以理解成:源码编译后,留在安装包里的程序指令。

通过这些指令,它找到了两个很关键的边界:

  • 数据库连接流程中,存在调用 JDBC 驱动建立连接的代码。
  • SQL 执行流程中,会创建语句、设置超时,再调用执行接口。

对我这个第一次尝试的人来说,这比一句“它是数据库管理软件”具体多了。

AI 已经能把一个庞大的成品软件,整理成可以继续研究的模块和流程。

但这里有一个边界:这些是静态分析结果,没有运行 DBeaver 来验证全部行为,也没有恢复出完整源码。

第三步:我问了一个更实际的问题

看完分析,我真正关心的事情来了:

我想做同样的功能,需要恢复源代码吗?

AI 的回答是:不一定。

这也是整个实验里,对我最有帮助的一点。

因为我原本以为,要做类似的软件,得先把原来的源码全部恢复出来。

但完整反编译的成本很高,得到的结果也未必能直接编译运行。

如果目标是做一个数据库客户端,更实际的做法是先明确功能范围。

我随后只补充了两个条件:

支持 MySQL,做桌面端。

于是,任务从“研究一个软件”,变成了“做一个能使用的基础版”。

第四步:它开始写代码,而不是继续讲方案

AI 选择了 Electron、Vue 和 mysql2,独立编写了一个叫 MySQL Studio 的桌面应用。

第一版做出来的功能包括:

  • 新建、编辑、测试和保存连接;
  • 加密保存连接密码;
  • 浏览数据库和表;
  • 查看表结构、预览表数据;
  • 编辑并执行单条 SQL;
  • 展示结果、导出 CSV;
  • 保留本次会话的查询历史。

界面也已经成形:左侧是连接和数据库,右侧上方写 SQL,下方看结果。

对于经常使用数据库工具的人,这个布局应该很熟悉。

整个过程没有恢复 DBeaver 的完整源码,也没有复制它的反编译代码。

逆向分析提供了理解软件的线索,新的应用则是根据明确的功能需求重新实现的。

第五步:测试也发现了真实问题

我觉得这一步特别值得小白关注。

AI 写完代码后,还进行了测试和桌面启动检查。

其中一次测试发现:执行 UPDATE 时,驱动可能返回空的字段列表,程序却直接对它进行处理,导致报错。

AI 根据错误信息定位问题、修改代码,再重新运行测试。

最终,13 项测试通过,界面构建和桌面启动检查也通过了。

随后,它生成了 Windows 便携版 EXE。我让它启动,程序也成功启动了。

这才是这次实验最直观的成果:从一个安装目录,走到了一个可以打开的桌面应用。

但它还不是完整的 DBeaver

这一点必须说清楚。

当前完成的是基础版,自动补全、结果表格编辑、SSH 隧道等功能还没有实现。

数据库协议测试使用了本地模拟器,通过真实 mysql2 TCP 客户端进行验证,还没有连接真实 MySQL 5.7/8.x 完成联调。

所以,“测试通过”和“真实数据库环境下已经充分验证”,是两个不同的阶段。

第一次用 AI 做软件,我更愿意把这个结果看成:一个已经能启动、具备核心流程、值得继续测试的原型。

小白第一次尝试,我最大的收获是什么?

不是记住了多少逆向术语。

而是发现,自己可以用普通语言推动一个技术任务:

先告诉 AI 分析哪个软件,再询问实现方式,然后补充平台和数据库范围,最后让它写代码、测试、打包和启动。

当然,目标越明确,结果越容易检验。

与其一开始就说“做一个完整的 DBeaver”,不如先说:

支持 MySQL,能连接、浏览表、执行 SQL、查看结果,做成桌面应用。

这次实验让我看到,AI 已经能把“我有个想法”,推进成一个可以打开、可以检查、可以继续改进的软件。

而第一次尝试的小白,最值得学会的,也许就是两件事:

把需求说具体,把效果看清楚。

最终效果如下

相关学习资料