我开发了一个自动还原源码的小工具
最近我花了一周的时间,折腾出了一个我一直想要的工具 —— 自动还原源码。
在做逆向分析的时候,大家应该都知道一个痛点:
很多 JAR 包、Class 文件,反编译后往往要么缺少 import,要么格式乱七八糟,甚至报错不断。手工去修复不仅效率低,还特别容易出错。一个代码类几十个错误,最让我头疼的是如果项目比较大,太多的代码报错,你搞一周估计也搞不定,但是开发工具出来,基本5分钟可以搞定源码生成,但是对于逻辑错误和代码本身写的有问题的目前还识别不了,目前可以解决98%的报错,剩余的2%还需要人工辅助结合开发工具打包测试验证。
于是,我想着干脆自己写一个小工具,把这些繁琐的步骤自动化掉。
经过几天的研究和尝试,我终于搞出了一个“自动还原源码”的小工具:
V1.0版本目前解决了哪些功能?
支持批量处理:上传后即可自动扫描 class 文件;
自动补全 import:尽量恢复原有的依赖结构;
一键格式化:源码输出更整洁清晰;
解决代码实体类序列化问题
解决逆向桥接问题
解决lombok表达式找不到属性问题,和mybatiesplus 表达式没有条件问题
界面简单直观:我甚至做了一个小 UI,点点按钮就能逆向出来。
虽然还没公开放出来,但目前已经可以自己使用了。
效果比我预想的好很多,至少能大幅度节省逆向还原源码的时间。
未来可能会继续完善,比如:
做成插件化,支持更多格式;
加上智能修复机制,让报错率更低(后面会接入AI模型改进和修复,因为单纯的代码没有工具借助做到百分百去分析代码不报错,并且能打包出来目前还是很有挑战性的);
甚至考虑开发出来给需要的人用。
接入AI模型分析和可视化
这是我的自研项目,也算是一次探索:
能不能通过自动化 + AI,减少逆向工程中的重复劳动,把人解放出来,专注于更有价值的分析?
直接看效果:
直接上传自动化解析就行
🧱 架构分阶段开发方案
✅ 第一阶段:基础反编译功能
- 输入 .jar/.class,调用 jadx 输出 .java 源文件
- CLI 封装:python or java 脚本调用外部命令
- 输出目录结构与包名一致
✅ 第二阶段:自动补全 import
- 用 JavaParser 遍历 AST:
- 提取未解析的类名
- 基于 classpath 搜索全名(可选扫描 rt.jar 或当前项目)
- 自动写入 import
✅ 第三阶段:格式化与语法验证
- 使用 google-java-format 格式化
- 用 javac 或 Eclipse JDT 校验语法错误,自动定位错误类
✅ 第四阶段:构建 & 打包
- 自动生成 pom.xml(或 Gradle)
- 自动调用 mvn clean package
- 输出编译结果(构建成功/失败、异常信息)
✅ 第五阶段(增强):类关系图
- 使用 Python 调用 Graphviz 渲染调用关系
- 或 Java 用 ASM、javassist 分析字节码关系
📌 目前工具还在内测阶段,不想透露太多实现细节。
但如果你对这个方向感兴趣,可以留言交流 👋。