在2022年底,当我专注于Java漏洞分析与挖掘工作时,常常需要翻阅庞大的JAR文件,在密密麻麻的类与方法中定位诸如Sink点、Gadget链等信息。市面上现有的工具感觉过于笨重,于是一个朴素的想法诞生了:打造一款能够快速定位Sink点、追踪方法调用链的图形化工具。
这个想法很快付诸实践。2022年12月3日,jar-analyzer v1版本发布。发布的第一张截图展示的是从log4j2的JAR包中,精准找到了JndiLookup.lookup方法。

jar-analyzer-v1链接:
https://github.com/jar-analyzer/jar-analyzer-v1-gui
重构之路:v2与持久化存储
v1版本虽然解决了部分问题,但存在一个致命短板:所有分析数据都存储在内存的HashMap中,缺乏持久化。面对大型项目时,内存压力巨大;每次重启工具,所有工作都得推倒重来。我意识到,要让这个工具真正可用,必须从根本上解决数据管理问题。
于是在2023年10月,jar-analyzer v2的重构正式启动。核心决策只有一个:用SQLite数据库全面替代内存存储,让所有分析结果持久化、可复用。同时,我重新设计了整个GUI界面,力求在功能完备与视觉体验之间找到平衡点。

v2项目链接:
https://github.com/jar-analyzer/jar-analyzer
此后,项目发展进入快车道。迄今为止已发布超过50个版本,汇聚了十余位贡献者,从一个个人小工具,成长为一个由社区驱动的开源实战项目。

进阶功能:从自动化追踪到污点验证
在社区多位师傅的建议和直接贡献下,v2版本的功能日益丰富。
DFS调用链追踪 —— 用户可以指定Sink点或Source点,工具通过深度优先搜索算法自动遍历所有可能的方法调用路径,将漏洞的“来龙去脉”清晰地呈现出来。

污点分析 —— 为了实现更精确的分析,我从零开始实现了一套朴素但有效的模拟JVM污点分析引擎。它可以验证DFS推导出的调用链是否真实可达,帮助分析人员快速排除误报,这在Java安全分析中至关重要。

从手动翻阅代码到自动化路径追踪,从依赖猜测到数据流验证,代码审计的效率实现了质的飞跃。
社区的认可与真实案例
在持续的迭代中,jar-analyzer逐渐积累了一批忠实的用户。他们中有专业的安全研究员,也有一线的攻防工程师;有人用它挖到了高价值的0day漏洞,也有团队在内部推广使用。

拥抱AI: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
工作流编排:n8n实现全自动审计
如果说MCP打开了AI分析的大门,那么n8n工作流编排则补全了自动化分析的最后一环。另一位师傅基于n8n构建了一套完整的AI辅助分析流程:首先自动收集所有Controller、Servlet等入口信息,然后通过MCP接口逐层深入分析方法的调用关系,最终自动生成结构化的漏洞分析报告。
说明文档:https://github.com/jar-analyzer/jar-analyzer/tree/master/n8n-doc


从源代码到漏洞报告,整个过程实现了高度自动化。

技能化与引擎化:降低使用门槛
随着Claude Code的兴起,SKILL成为了AI辅助开发的新范式。0cat师傅为jar-analyzer编写了专属SKILL,并在实际业务中投入使用,实现了与Claude Code的深度集成。AI不再只是被动回答问题,而是能够主动调用jar-analyzer的分析能力,在代码审计的每一步提供精准辅助。
SKILL说明文档:https://github.com/jar-analyzer/jar-analyzer/tree/master/skills

然而,SKILL模式仍有门槛:用户需要先用GUI构建数据库,再配置MCP服务,链路较长。能否将这些能力浓缩为一个极简的CLI工具?
jar-analyzer-engine由此诞生。它剥离了GUI外壳,将核心分析引擎独立为命令行工具,其处理流程如下:
输入 (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这种轻量化的方式,不少用户在实际项目中成功挖掘到了漏洞。

生态整合:Claude Code官方插件
既然engine已经具备了强大而独立的能力,何不更进一步,将其封装成一个即插即用的Claude Code插件?jar-analyzer-claude应运而生。为了方便用户,我将其做成了Claude官方的插件市场(marketplace),用户只需一行命令添加市场,即可直接安装,无需手动下载和配置SKILL。
项目链接:https://github.com/jar-analyzer/jar-analyzer-claude


通过 /build-db 命令构建数据库,再通过 /do-analyze 进行进阶分析。项目规范要求,优先使用sqlite3命令查询数据库;只有在基于SQL查询信息进行有理有据的分析后,必要时才进行反编译来确认真实的代码逻辑和数据流。

总结与展望
从2022年12月到2026年初,近四年的时光里,jar-analyzer走出了一条清晰的技术演进路径:从一个功能简单的个人工具,演进为GUI完善、体验流畅的v2版本;从纯手工分析,发展到支持DFS自动追踪、污点分析验证和表达式搜索的自动化工具。

进入AI时代后,它又快速适配,从MCP协议到n8n工作流编排,从专属SKILL到Claude Code官方插件——每一步都在致力于降低Java安全分析的门槛,让漏洞挖掘变得更高效、更智能。截至目前,工具累计下载量已超过20000次。
感谢所有贡献者和使用者的支持。如果你正在从事Java安全分析或代码审计工作,希望jar-analyzer及其生态能够成为你得力的助手。技术社区的交流与碰撞总能催生更好的工具与实践,欢迎大家在云栈社区的相关板块分享你的使用经验或想法。