2026年jar-analyzer开发历程:从Java静态分析工具到AI集成漏洞挖掘引擎

jar-analyzer开发历程:从Java静态分析工具到AI集成漏洞挖掘引擎在 2022 年底 当我专注于 Java 漏洞分析与挖掘工作时 常常需要翻阅庞大的 JAR 文件 在密密麻麻的类与方法中定位诸如 Sink 点 Gadget 链等信息 市面上现有的工具感觉过于笨重 于是一个朴素的想法诞生了 打造一款能够快速定位 Sink 点 追踪方法调用链的图形化工具 这个想法很快付诸实践 2022 年 12 月 3 日 jar analyzer v1 版本发布

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



在2022年底,当我专注于Java漏洞分析与挖掘工作时,常常需要翻阅庞大的JAR文件,在密密麻麻的类与方法中定位诸如Sink点、Gadget链等信息。市面上现有的工具感觉过于笨重,于是一个朴素的想法诞生了:打造一款能够快速定位Sink点、追踪方法调用链的图形化工具。

这个想法很快付诸实践。2022年12月3日,jar-analyzer v1版本发布。发布的第一张截图展示的是从log4j2的JAR包中,精准找到了JndiLookup.lookup方法。

Jar Analyzer v1版本界面截图,展示了从Log4j JAR中查找JndiLookup.lookup方法的过程

jar-analyzer-v1链接

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

v1版本虽然解决了部分问题,但存在一个致命短板:所有分析数据都存储在内存的HashMap中,缺乏持久化。面对大型项目时,内存压力巨大;每次重启工具,所有工作都得推倒重来。我意识到,要让这个工具真正可用,必须从根本上解决数据管理问题。

于是在2023年10月,jar-analyzer v2的重构正式启动。核心决策只有一个:用SQLite数据库全面替代内存存储,让所有分析结果持久化、可复用。同时,我重新设计了整个GUI界面,力求在功能完备与视觉体验之间找到平衡点。

Jar Analyzer v2图形界面,展示了在IDE中分析Spring Boot控制器

v2项目链接

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

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

Jar Analyzer的GitHub发布页面与贡献者列表

在社区多位师傅的建议和直接贡献下,v2版本的功能日益丰富。

DFS调用链追踪 —— 用户可以指定Sink点或Source点,工具通过深度优先搜索算法自动遍历所有可能的方法调用路径,将漏洞的“来龙去脉”清晰地呈现出来。

DFS漏洞利用链分析配置界面

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

污点分析过程与结果详情展示

从手动翻阅代码到自动化路径追踪,从依赖猜测到数据流验证,代码审计的效率实现了质的飞跃。

在持续的迭代中,jar-analyzer逐渐积累了一批忠实的用户。他们中有专业的安全研究员,也有一线的攻防工程师;有人用它挖到了高价值的0day漏洞,也有团队在内部推广使用。

来自安全研究员和工程师们的用户评价

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

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

AI通过MCP协议分析Groovy控制器漏洞的对话截图

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

如果说MCP打开了AI分析的大门,那么n8n工作流编排则补全了自动化分析的最后一环。另一位师傅基于n8n构建了一套完整的AI辅助分析流程:首先自动收集所有Controller、Servlet等入口信息,然后通过MCP接口逐层深入分析方法的调用关系,最终自动生成结构化的漏洞分析报告。

说明文档:https://github.com/jar-analyzer/jar-analyzer/tree/master/n8n-doc

n8n工作流编排示意图,集成了获取各类Web组件信息
AI代理分析架构流程图

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

AI生成的漏洞分析仪表盘报告

随着Claude Code的兴起,SKILL成为了AI辅助开发的新范式。0cat师傅为jar-analyzer编写了专属SKILL,并在实际业务中投入使用,实现了与Claude Code的深度集成。AI不再只是被动回答问题,而是能够主动调用jar-analyzer的分析能力,在代码审计的每一步提供精准辅助。

SKILL说明文档:https://github.com/jar-analyzer/jar-analyzer/tree/master/skills

jar-audit-agent技能审计结果截图

然而,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这种轻量化的方式,不少用户在实际项目中成功挖掘到了漏洞。

用户讨论engine轻量化和漏洞挖掘的聊天截图

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

项目链接:https://github.com/jar-analyzer/jar-analyzer-claude

Claude Code插件安装说明

在Claude Code中使用插件构建数据库

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

通过sqlite3命令查询数据库中的Sink点信息

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

jar-analyzer各版本下载量统计

进入AI时代后,它又快速适配,从MCP协议到n8n工作流编排,从专属SKILL到Claude Code官方插件——每一步都在致力于降低Java安全分析的门槛,让漏洞挖掘变得更高效、更智能。截至目前,工具累计下载量已超过20000次。

感谢所有贡献者和使用者的支持。如果你正在从事Java安全分析或代码审计工作,希望jar-analyzer及其生态能够成为你得力的助手。技术社区的交流与碰撞总能催生更好的工具与实践,欢迎大家在云栈社区的相关板块分享你的使用经验或想法。

小讯
上一篇 2026-03-27 20:41
下一篇 2026-03-27 20:39

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/248387.html