Jar Analyzer
是一个分析 Jar
文件的 GUI
工具:
- 支持大
Jar
以及批量Jars
分析 - 方便地搜索方法之间的调用关系
- 分析
LDC
指令定位Jar
中的字符串 - 一键分析
Spring Controller/Mapping
- 对于方法字节码和指令的高级分析
- 一键反编译,优化对内部类的处理
- 一键生成方法的
CFG
分析结果 - 一键生成方法的
Stack Frame
分析结果 - 远程分析
Tomcat
中的Servlet
等组件 - 自定义
SQL
语句进行高级分析 - 集成
ClazzSearcher
项目作为命令行分析版本 - 允许从字节码层面直接修改方法名(测试功能)
- 自从
2.14
版本之后支持了全屏显示的功能 - 自从
2.15
版本后支持代码区域字符串搜索功能 - 自从
2.15
版本后支持通过HTTP
分析远程文件 - 自从
2.16
版本后支持一键导出反编译JAVA
代码 - 自从
2.17
版本后支持字节码指令级别的远程调试(参考 示例图) - 自从
2.17
版本后支持从序列化数据一键提取恶意JAVA
代码(参考 示例图)
更多的功能正在开发中
有问题和建议欢迎提 issue
Jar Analyzer
的用途
- 场景1:从大量
JAR
中分析某个方法在哪个JAR
里定义(精确到具体类具体方法) - 场景2:从大量
JAR
中分析哪里调用了Runtime.exec
方法(精确到具体类具体方法) - 场景3:从大量
JAR
中分析字符串${jndi
出现在哪些方法(精确到具体类具体方法) - 场景4:从大量
JAR
中分析有哪些Spring Controller/Mapping
信息(精确到具体类具体方法) - 场景5:你需要深入地分析某个方法中
JVM
指令调用的传参(带有图形界面) - 场景6:你需要深入地分析某个方法中
JVM
指令和栈帧的状态(带有图形界面) - 场景7:你需要深入地分析某个方法的
Control Flow Graph
(带有图形界面) - 场景8:你有一个
Tomcat
需要远程分析其中的Servlet/Filter/Listener
信息 - 场景9:查实现接口
A
继承接口B
类注解C
且方法名test
方法内调用D
类a
方法的方法
虽然 Jar Analyzer
使用了简易的 RASP
进行保护,但仍然可能存在安全漏洞,我们会第一时间进行修复
漏洞公告
- [GHSA-43rf-3hm4-hv5f] 反编译恶意的 CLASS 文件可能导致程序不可用
- [GHSA-x5h2-78p8-w943] Jar Analyzer 2.13 版本之前存在 SQL 注入漏洞
- [GHSA-jmcg-r2c5-7m29] Jar Analyzer 存在 ZIP SLIP 漏洞(最坏情况可导致 RCE 风险)
文章
视频
编译和构建过程如下:
- 构建核心项目
mvn -B clean package -DskipTests --file pom.xml
- 构建
agent
子项目mvn -B clean package -DskipTests --file agent\pom.xml
- 构建命令行子项目
mvn -B clean package -DskipTests --file class-searcher\pom.xml
- 构建
rasp
子项目mvn -B clean package -DskipTests --file jar-analyzer-rasp\pom.xml
- 使用
cmake
构建native
目录的C
代码生成dll
文件放入resources
- 使用
winres
和gcc
构建启动exe
文件和图标信息 - 参考
build.py
和build.yml
文件进行最终的文件合并和版本构建
方法调用关系
方法调用搜索 (支持 equals/like
选项,支持黑名单过滤)
指令分析
CFG
分析
带图形的 Stack Frame
分析
分析 Spring Framework
从 2.8
版本开始支持 tomcat
分析(一检查杀内存马)
自定义 SQL
语句任意分析
Jar Analyzer 2.12
版本以后使用自研 RASP
保护程序
(Runtime Application Self-Protection)
Jar Analyzer 2.15
版本以后支持代码区域的搜索
Jar Analyzer 2.15
版本以后支持远程 Jar
文件加载
Jar Analyzer 2.17
版本以后支持远程字节码调试
Jar Analyzer 2.17
版本以后支持从序列化数据中一键提取恶意代码
CTRL+X
方法交叉引用 快速跳转方法caller
和callee
页面CTRL+F
代码区域搜索 打开搜索面板 支持next
和prev
选项
This project is developed using JetBrains IDEA. Thanks to JetBrains for providing me with a free license, which is a strong support for me.