Skip to content

Jar Analyzer - 一个JAR包分析工具,SCA漏洞分析,批量分析JAR包,方法调用关系搜索,字符串搜索,Spring组件分析,CFG程序分析,JVM栈帧分析,进阶表达式搜索,字节码指令级的动态调试分析,反编译JAR包一键导出,一键提取序列化数据恶意代码

License

Notifications You must be signed in to change notification settings

hacats/jar-analyzer

 
 

Jar-Analyzer

CHANGE LOG

gitleaks badge

首页

一键快速搜索(自从 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 可以快速反编译和查看字节码,用于某些场景

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 版本后支持启动时配置 10UI 主题(LookAndFeel
  • 自从 2.19 版本后支持实时的 CPU 占用和内存的折线图展示(参考 示例图
  • 自从 2.20 版本后支持选中字符串全局高亮显示(参考 示例图
  • 自从 2.21 版本后支持分析配置类和包名的白名单
  • 自从 2.21 版本后支持左侧文件数使用 CTRL+F 打开类名搜索(参考 示例图
  • 自从 2.21 版本后新增内置开启 ZGCJRE 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 可以跳过分析快速查看

更多的功能正在开发中

有问题和建议欢迎提 issue

前往下载

截图

方法调用关系

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

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

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

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

Jar Analyzer 2.18 版本以后支持 HTTP API

示例图 1 示例图 2

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

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

表达式

表达式搜索是 jar-analzyer 重要的高级功能:可以自定义多种条件组合搜索方法

表达式搜索位于首页以及 AdvancePlugins 部分

详细文档

相关

想深入交流可以发联系方式到邮箱后我拉你进群:ZW15aXFpbmdAZ21haWwuY29t

感谢列表

contributors

时间

  • Jar Analyzer V1 最初版诞生于 2022.11.27
  • Jar Analyzer V22023.10.23 第一次提交
  • Jar Analyzer v2 正式版在 2023.12.07 发布
  • Jar Analyzer V22024.08.15 发布 3.0 版本
  • Jar Analyzer V22024.09.30Star 破千
  • Jar Analyzer V22024.11.07 发布 4.0 版本

发版时间

目前版本 4.X 计划每月更新一次(一般情况下在当天的 0 点发布)

如果当天是非工作日则延期至之后第一个工作日

  • 2024.12.08
  • 2025.01.08
  • 2025.02.08

性能测试

参考 性能测试文档 对比分析 G1GCZGC 情况

漏洞公告

注意:当 Jar 数量较多或巨大时可能导致临时目录和数据库文件巨大

UI 兼容性问题请查看 ISSUE 部分的置顶

BUILD

注意:首先对你的 IDEA 进行设置(本项目不支持 Eclipse/VS CodeIDE 环境)

编译和构建过程如下:(以 Windows 为例其他环境类似)

  1. 重要:确保你安装了 JDK 8 64位 (无论 Oracle JDKOpenJDK 都可)
  2. 重要:如果你修改了代码请确保在 IDEA 环境中至少启动一次(生成 GUI 代码)
  3. 重要:确保你安装了 Maven 3.X 并正确配置了 PATH 变量(需要使用 mvn 命令)
  4. 可选:运行 ContributorContributorMD 生成最新贡献者信息
  5. 可选:构建 agent 子项目 cd agent && package.bat
  6. 重要:构建核心项目 package.bat
  7. 可选:使用 cmake 构建 native 目录生成 dll 文件放入 resources
  8. 可选:使用 winresgcc 构建启动 exe 文件和图标信息
  9. 可选:完整发版参考 build.pybuild.yml 文件

进阶功能

以上是基础功能,进阶和测试性的功能请参考:进阶测试性功能

例如类似 OD/GDB 的指令级 GUI 调试(未完成)

快捷键

  • CTRL+X 方法交叉引用 快速跳转方法 callercallee 页面
  • CTRL+F 代码区域搜索 打开搜索面板 支持 nextprev 选项
  • 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

文档

Thanks

IntelliJ IDEA logo.

This project is developed using JetBrains IDEA. Thanks to JetBrains for providing me with a free license, which is a strong support for me.

Star

Star History Chart

About

Jar Analyzer - 一个JAR包分析工具,SCA漏洞分析,批量分析JAR包,方法调用关系搜索,字符串搜索,Spring组件分析,CFG程序分析,JVM栈帧分析,进阶表达式搜索,字节码指令级的动态调试分析,反编译JAR包一键导出,一键提取序列化数据恶意代码

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 97.9%
  • C 1.4%
  • Python 0.2%
  • Go 0.2%
  • C++ 0.1%
  • HTML 0.1%
  • Other 0.1%