目录导航
Jar-Analyzer简介
Jar Analyzer – 一个JAR包分析工具,批量分析,SCA漏洞分析,方法调用关系搜索,字符串搜索,Spring组件分析,信息泄露检查,CFG程序分析,JVM栈帧分析,进阶表达式搜索,字节码指令级的动态调试分析,反编译JAR包一键导出,一键提取序列化数据恶意代码,一键分析BCEL字节码。
Jar Analyzer 的用途
- 场景01:从大量
JAR中分析某个方法在哪个JAR里定义(精确到具体类具体方法) - 场景02:从大量
JAR中分析哪里调用了Runtime.exec方法(精确到具体类具体方法) - 场景03:从大量
JAR中分析字符串${jndi出现在哪些方法(精确到具体类具体方法) - 场景04:从大量
JAR中分析有哪些Spring Controller/Mapping信息(精确到具体类具体方法) - 场景05:从大量
JAR中分析是否存在Apache Log4j2漏洞(匹配所有CVE漏洞) - 场景06:从大量
JAR中分析是否有使用FASTJSON 47/68/80等存在漏洞的版本 - 场景07:从大量
JAR中分析各种常见的Java安全漏洞调用出现在哪些方法 - 场景08:你需要深入地分析某个方法中
JVM指令调用的传参(带有图形界面) - 场景09:你需要深入地分析某个方法中
JVM指令和栈帧的状态(带有图形界面) - 场景10:你需要深入地分析某个方法的
Control Flow Graph(带有图形界面) - 场景11:你有一个
Tomcat需要远程分析其中的Servlet/Filter/Listener信息 - 场景12:你有一个序列化数据里面包含了恶意的
Class字节码需要一键提取分析 - 场景13:你有一个
BCEL格式的字节码需要一键反编译代码分析 - 场景14:你有一大堆
Jar文件或目录需要全部批量反编译导出代码 - 场景15:从大量
JAR中分析IP地址/手机号/邮箱等各种信息泄露 - 测试功能:字节码指令级别的调试
Jar Analyzer 是一个分析 Jar 文件的 GUI 工具:
- 支持大
Jar以及批量Jars分析 - 方便地搜索方法之间的调用关系
- 分析
LDC指令定位Jar中的字符串 - 一键分析
Spring Controller/Mapping - 对于方法字节码和指令的高级分析
- 一键反编译,优化对内部类的处理
- 一键生成方法的
CFG分析结果 - 一键生成方法的
Stack Frame分析结果 - 远程分析
Tomcat中的Servlet等组件 - 自定义
SQL语句进行高级分析 - 自从
2.14版本之后支持了全屏显示的功能 - 自从
2.15版本后支持代码区域字符串搜索功能 - 自从
2.15版本后支持通过HTTP分析远程文件 - 自从
2.16版本后支持一键导出反编译JAVA代码 - 自从
2.17版本后支持字节码指令级别的远程调试(参考 示例图) - 自从
2.17版本后支持从序列化数据一键提取恶意JAVA代码(参考 示例图) - 自从
2.18版本后支持HTTP API查询接口(参考 示例图) - 自从
2.19版本后支持启动时配置10种UI主题(LookAndFeel) - 自从
2.19版本后支持实时的CPU占用和内存的折线图展示(参考 示例图) - 自从
2.20版本后支持选中字符串全局高亮显示(参考 示例图) - 自从
2.21版本后支持分析配置类和包名的白名单 - 自从
2.21版本后支持左侧文件数使用CTRL+F打开类名搜索(参考 示例图) - 自从
2.21版本后新增内置开启ZGC的JRE 21环境(仅包含核心功能) - 自从
2.23版本后新增SCA分析(参考 示例图1 示例图2) - 自从
2.24版本后改善SCA分析逻辑(显著提高扫描效率) - 自从
3.0版本后支持生成HTML方法调用图(参考 示例图) - 自从
3.0版本后支持代码区域选中字符串右键搜索(参考 示例图) - 自从
3.0版本后支持方法右键添加备忘录(参考 示例图) - 自从
3.0版本后新增多种常见的JAVA RCE漏洞调用一键搜索功能 - 自从
3.1版本后支持BCEL字符串一键反编译Java代码(参考 示例图) - 自从
3.1版本后远程Tomcat分析改为premain方式(参考 示例图) - 自从
3.2版本后远程Tomcat分析功能重写和增强(参考 示例图) - 自从
4.0版本后方法跳转的定位大幅优化和精确(使用JavaParser库实现) - 自从
4.0版本后支持一键的信息泄露检查(参考 示例图) - 自从
4.0版本后支持类似IDEA的全局搜索(基于Lucene支持代码片段) - 自从
4.0版本后支持不限制次数的前进后退步骤(记录所有的操作信息) - 自从
4.0版本批量反编译Jar导出源码功能修复增强 - 自从
4.0版本后新增多个图标GUI界面进一步美化 - 自从
4.1版本后内置JD-GUI可以跳过分析快速查看 - 自从
4.2版本后支持黑暗主题切换
更多的功能正在开发中
有问题和建议欢迎提 issue
部分功能介绍
首页

一键快速搜索(自4.0版本后支持通过配置动态生成GUI按钮)

比如一个Runtime.exec动态规则(配好后直接生成按钮和搜索逻辑)
Runtime.exec:
- !!me.n1ar4.jar.analyzer.engine.SearchCondition
className: java/lang/Runtime
methodName: exec
methodDesc: null
静态分析spring项目

通过agent分析tomcat

表达式搜索

从4.0版本后支持信息泄露检查(部分正则源自HaE项目)

从4.0版本开始可以和IDEA同样的快捷键shift调出Lucene全局搜索

自从4.0版本开始修复增强批量反编译Jar导出功能

自4.1版本后支持选择快速启动引擎和使用JD-GUI查看两种方式
- 启动引擎分析通常是非常运行的操作,有时我们没有完全必要的分析
- 启动
JD-GUI可以快速反编译和查看字节码,对于某些场景

自定义4.2版本后支持黑暗主题切换

截图
方法调用关系

方法调用搜索 (支持 equals/like 选项,支持黑名单过滤)

Jar Analyzer 2.15 版本以后支持代码区域的搜索

Jar Analyzer 2.15 版本以后支持远程 Jar 文件加载

Jar Analyzer 2.17 版本以后支持从序列化数据中一键提取恶意代码

Jar Analyzer 2.18 版本以后支持 HTTP API
Jar Analyzer 2.19 版本以后支持实时的 CPU 和内存占用分析

Jar Analyzer 2.20 版本后支持选中字符串全局高亮显示

表达式
表达式搜索是 jar-analzyer 重要的高级功能:可以自定义多种条件组合搜索方法
表达式搜索位于首页以及 Advance 的 Plugins 部分
漏洞公告
- [GHSA-43rf-3hm4-hv5f] 反编译恶意的 CLASS 文件可能导致程序不可用
- [GHSA-x5h2-78p8-w943] Jar Analyzer 2.13 版本之前存在 SQL 注入漏洞
- [GHSA-jmcg-r2c5-7m29] Jar Analyzer 存在 ZIP SLIP 漏洞(最坏情况可导致 RCE 风险)
注意:当 Jar 数量较多或巨大时可能导致临时目录和数据库文件巨大
有 UI 兼容性问题请查看 ISSUE 部分的置顶
BUILD
注意:首先对你的 IDEA 进行设置(本项目不支持 Eclipse/VS Code 等 IDE 环境)

编译和构建过程如下:(以 Windows 为例其他环境类似)
- 重要:确保你安装了
JDK 8 64位(无论Oracle JDK或OpenJDK都可) - 重要:如果你修改了代码请确保在
IDEA环境中至少启动一次(生成GUI代码) - 重要:确保你安装了
Maven 3.X并正确配置了PATH变量(需要使用mvn命令) - 可选:运行
Contributor和ContributorMD生成最新贡献者信息 - 可选:构建
agent子项目cd agent && package.bat - 重要:构建核心项目
package.bat - 可选:使用
cmake构建native目录生成dll文件放入resources - 可选:使用
winres和gcc构建启动exe文件和图标信息 - 可选:完整发版参考
build.py和build.yml文件
进阶功能
以上是基础功能,进阶和测试性的功能请参考:进阶测试性功能
例如类似 OD/GDB 的指令级 GUI 调试(未完成)

快捷键
CTRL+X方法交叉引用 快速跳转方法caller和callee页面CTRL+F代码区域搜索 打开搜索面板 支持next和prev选项CTRL+F文件树区搜索 显示搜索面板 搜索文件树中的类名以及内部类
UI 主题
支持以下:
- default (默认使用 类似
IDEA主题) - metal
- win (仅
Windows支持) - win-classic (仅
Windows支持) - motif
- mac (仅
MacOS支持) - gtk (仅某些
Linux支持) - cross
- aqua (仅
MacOS支持) - nimbus
在启动时指定:java -jar jar-analyzer.jar gui -t [theme]
例如:java -jar jar-analyzer.jar gui -t win-classic
或者修改启动脚本的代码
set "theme_name=default"
注意
子项目
其他
早期文章视频以及解释一些内部的原理和注意事项
参考
API
评价
(1) 我发现 jar-analyzer 性能方面很出色(某知名安全研究员)
(2) 某些场景 jar-analyzer 的表达式功能比 codeql 更好用(某安全研究员)
(3) 我使用 jar-analyzer 挖了不少的 0 day 漏洞,推荐使用 (某知名安全研究员)
(4) 大佬的 jar-analyzer 很好用 (某乙方安全工程师)
(5) 师傅的 jar-analyzer 太强了 (某知名安全研究员)
(6) 刚才老板大力表扬了 jar-analyzer 说超级好用(某甲方安全工程师)
(7) 大佬,先说一句 jar-analyzer 真好用(某乙方安全工程师)
(8) jar-analyzer 最好用(某乙方安全工程师)
(9) Java 漏洞挖掘神器 jar-analyzer(某乙方安全工程师)
截图
方法调用关系
项目地址
GitHub:
https://github.com/jar-analyzer/jar-analyzer
下载地址
- jar-analyzer-4.2-windows-23.zip
- jar-analyzer-4.2-windows-full.zip
- jar-analyzer-4.2-windows-system.zip
- jar-analyzer-4.2.zip
转载请注明出处及链接