ARTICLE · 1163524
第一次用 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 已经能把“我有个想法”,推进成一个可以打开、可以检查、可以继续改进的软件。
而第一次尝试的小白,最值得学会的,也许就是两件事:
把需求说具体,把效果看清楚。
最终效果如下