从古法审计到AI时代:jar-analyzer的开发史

admin 2026-04-28 05:04:54 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文回顾了jar-analyzer从2022年至今的开发历程,该工具专注于Java漏洞分析,经历了从内存存储到SQLite持久化、从GUI工具到AI集成的演进。关键功能包括DFS调用链追踪、污点分析验证,并逐步整合MCP协议、n8n工作流和Claude插件,显著提升了Java安全分析的自动化程度。文档建议安全研究者直接使用其开源工具或AI插件进行漏洞挖掘。 综合评分: 85 文章分类: 漏洞分析,安全工具,安全开发,AI安全,代码审计


cover_image

从古法审计到AI时代:jar-analyzer 的开发史

原创

4ra1n 4ra1n

4ra1n

2026年3月21日 21:14 陕西

在小说阅读器读本章

去阅读

0x01 诞生

在 2022 年底,我正在做 Java 漏洞分析和挖掘工作,常常需要翻阅庞大的 jar 文件,在密密麻麻的类与方法中寻找 sink/gadget 等信息,我想做一个分析 jar 文件的 GUI 工具。

市面上的工具总感觉过于笨重,于是,一个朴素的念头萌生了:做一个能快速定位 sink 点、追踪方法调用链的 GUI 工具。

这个想法很快落地。2022 年 12 月 3 日 jar-analyzer v1 问世,发布的第一个截图是从 log4j2 的 jar 包中精准找到 Context.lookup

jar-analyzer-v1 链接:

https://github.com/jar-analyzer/jar-analyzer-v1-gui

0x02 重构 v2

v1 版本虽然解决了问题,但有着致命的短板:所有数据全部存储在内存的 HashMap 中,没有持久化。面对大型项目,内存告急;每次重启,一切归零,必须重新分析。我意识到,如果想让这个工具真正用起来,必须从根本上解决数据管理的问题。

2023 年 10 月 jar-analyzer v2 重构正式启动。核心决策只有一个:用 SQLite 替代内存存储,让所有分析结果持久化、可复用。同时,我重新设计了整套 GUI,力求在功能完备与视觉美感之间取得平衡。

链接:

https://github.com/jar-analyzer/jar-analyzer

此后,项目进入快车道。至今已发布 59 个版本,聚集了 10 余位贡献者,从一个小小的个人项目,成长为社区驱动的开源工具。

0x03 高级功能

在社区多位师傅的建议和直接贡献下,v2 逐渐羽翼丰满。

DFS 调用链追踪 —— 指定 sink 或 source,深度优先搜索自动遍历所有方法调用路径,将漏洞的”来龙去脉”一目了然地呈现出来。

污点分析 —— 从零手搓了一套最朴素但有效的模拟 JVM 污点分析实现,验证 DFS 推导出的调用链是否真实可达,帮助分析者快速排除误报。

从手动翻阅到自动追踪,从猜测到验证,分析效率实现了质的飞跃。

0x04 用户的认可

在四五年的持续迭代中,jar-analyzer 逐渐积累了一批忠实的使用者。他们中有安全研究员,也有一线攻防从业者;有用它挖到 0day 的,也有在甲方团队中推广使用的。

0x05 MCP

2025 年,AI 能力以前所未有的速度渗透到安全领域。一位师傅提出了一个前瞻性的想法:能否将 jar-analyzer 的分析能力通过 API 暴露出来,借助 MCP(Model Context Protocol)让 AI 大模型直接参与 Java 代码的漏洞分析?

这个想法很快变为现实。jar-analyzer 内置的 HTTP API 配合 MCP 服务端,让 AI 能够自主查询类信息、追踪方法调用关系、定位 sink 与 source,将人工分析经验转化为 AI 可理解的结构化数据。

说明文档:https://github.com/jar-analyzer/jar-analyzer/blob/master/mcp-doc/README.md

0x06 n8n 编排

如果说 MCP 打开了 AI 分析的大门,那么 n8n 工作流编排则补全了自动化分析的最后一块拼图。

另一位师傅基于 n8n 构建了一套完整的 AI 编排流程:首先自动统计所有 Controller 等入口信息,然后通过 MCP 逐层深入方法调用关系,最终自动生成漏洞分析报告。

说明文档:

https://github.com/jar-analyzer/jar-analyzer/tree/master/n8n-doc

从源码到报告,全程无需人工干预。

0x07 SKILL

随着 Claude Code 的崛起,SKILL 成为了 AI 辅助开发的新范式。0cat 师傅为 jar-analyzer 编写了专属 SKILL,并在实际业务中投入使用,实现了与 Claude Code 的深度集成。

AI 不再只是回答问题,而是能够主动调用 jar-analyzer 的能力,在代码审计的每一步都给出精准的辅助。

说明文档:

https://github.com/jar-analyzer/jar-analyzer/tree/master/skills

0x08 提取引擎

然而,SKILL 模式仍有门槛:用户需要先用 GUI 构建数据库,再配置 MCP 进行反编译查询,链路较长,配置复杂。

能否将这些能力浓缩为一个极简的 CLI 工具,让 AI 一行命令就能完成所有准备?

jar-analyzer-engine 由此诞生。它剥离了 v2 的 GUI 外壳,将核心分析引擎独立出来,以命令行工具的形式呈现:

https://github.com/jar-analyzer/jar-analyzer-engine

输入 (JAR)     │     ▼┌──────────────────────────────┐│  阶段 0: JAR 解压与过滤        │  解压文件,应用黑白名单│  (0% - 15%)                  │└──────────────┬───────────────┘               ▼┌──────────────────────────────┐│  阶段 1: 类发现 (Discovery)   │  提取类/方法/字段/注解信息│  (15% - 30%)                 │└──────────────┬───────────────┘               ▼┌──────────────────────────────┐│  阶段 2: 方法调用分析          │  分析方法体中的调用指令│  (30% - 40%)                 │└──────────────┬───────────────┘               ▼┌──────────────────────────────┐│  阶段 3: 继承关系构建          │  构建继承树 + 方法实现映射│  (40% - 70%) [标准模式]       │└──────────────┬───────────────┘               ▼┌──────────────────────────────┐│  阶段 4: 字符串常量提取        │  提取代码和注解中的字符串│  (70% - 80%) [标准模式]       │└──────────────┬───────────────┘               ▼┌──────────────────────────────┐│  阶段 5: Spring 分析          │  识别 Controller/Mapping 参数│  (80% - 90%) [标准模式]       │└──────────────┬───────────────┘               ▼┌──────────────────────────────┐│  阶段 6: JavaWeb 组件识别     │  识别 Servlet/Filter/Listener│  [标准模式]                   │└──────────────┬───────────────┘               ▼          SQLite 数据库

用户可以使用简单的一行命令构建数据库:

java -jar jar-analyzer-engine.jar --jar app.jar

需要反编译直接调用 engine cli 即可

--decompile com.example.MyClass

通过 engine 的方式,不少用户在实际项目中成功挖掘到了漏洞。

0x09 Claude Code 插件

既然 engine 的能力已经如此强大,那何不更进一步,封装一个基础的 Claude Code 插件?

jar-analyzer-claude 应运而生。普通用户可以拿来即用,进阶用户可以基于源码进行定制。

为了方便用户,我直接做成了 claude marketplace 市场,通过 /plugin 添加市场,直接安装插件,而无需下载 SKILL 后手动复制等方式生效。

https://github.com/jar-analyzer/jar-analyzer-claude

通过 /build-db 构建数据库,通过 /do-analyze 进阶分析

项目规定了,优先使用 sqlite3 查询,如果找不到命令再尝试 python 脚本;不可以直接反编译看代码,需要根据 sql 查询到的信息,有理有据的情况下,再进行反编译以确认真实的代码和数据流等情况。

0x10 总结

从 2022 年 12 月到 2026 年 3 月,四五年的光阴,jar-analyzer 走过了一条清晰而坚定的路:

从一个功能粗糙的个人小工具,到 GUI 精致、体验流畅的 v2 版本;从纯手工分析,到 DFS 自动追踪与污点分析验证,表达式搜索,各种细节优化手段。截至目前,总下载量 20000+ 次。

再到 AI 时代到来后,从 MCP 到 n8n 工作流编排,从 SKILL 到 Claude Code 官方插件 —— 每一步都在降低 Java 漏洞分析的门槛,让更多人能够高效地发现安全问题。

感谢所有贡献者和使用者。如果你正在做 Java 安全分析,希望 jar-analyzer 能成为你手中的利器。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:4ra1n 4ra1n 4ra1n《从古法审计到AI时代:jar-analyzer 的开发史》

评论:0   参与:  0