Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Krakatau — Java反编译器、汇编器和反汇编器 | Kitploit
工具/GitHubGitHub/storyyeller/krakatau
逆向工程二进制分析
GitHubstoryyeller/krakatau

Krakatau

Java反编译器、汇编器和反汇编器

查看仓库
2.2k2374个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Krakatau 提供了 Java 字节码的汇编器和反汇编器,使你可以将二进制类文件转换为人类可读的文本格式,进行修改,然后转换回类文件,即使是混淆代码也能处理。你也可以通过手动编写字节码从头创建自己的类文件,并检查和比较 Java 二进制文件的底层细节。与 javap 不同,Krakatau 反汇编器甚至可以处理高度混淆的代码,并且反汇编后的输出可以重新汇编成类文件。

Krakatau 还提供了一个反编译器,用于将 Java 二进制文件转换为可读的源代码。与其他反编译器不同,Krakatau 反编译器专门设计用于处理混淆代码,并能轻松应对其他反编译器无法处理的技巧。然而,Krakatau 反编译器不支持某些 Java 8+ 特性(如 lambda),因此它在处理较旧代码时表现最佳。

Krakatau 的汇编器语法主要是 Jasmin 语法的超集,存在一些小的不兼容性,但与 Jasmin 不同,Krakatau 完全支持 Java 19 字节码规范,甚至支持旧版本 JVM 中的一些未文档化特性。有关汇编器语法的概述,请参阅教程或完整规范。

安装

首先,你需要安装 Rust 和 Cargo。然后克隆此仓库并运行 cargo build --release。这将在 target/release/krak2 中生成一个二进制文件,你可以直接调用、添加到 PATH、创建符号链接等。

反汇编

反汇编器有两种模式:默认模式和往返模式。默认模式优化了结果汇编文件的可读性和易修改性。重新汇编时,生成的类文件在 JVM 规范角度上与原始文件行为等价,但不一定逐位相同(例如,常量池项可能被重新排序)。往返模式生成的输出将重新汇编成与原始文件逐位相同的类文件,但这意味着汇编文件保留了低层编码信息,使其更难阅读,例如常量池项的确切顺序。在处理依赖非标准属性(如 CLDC 代码或 Scala 代码)的代码时,建议使用往返模式。

使用示例:

root@kitploit:~
krak2 dis --out temp RecordTest.class

krak2 dis --out disassembled.zip --roundtrip r0lling-challenge.jar

你可以反汇编单个类文件或整个 jar 文件。如果输入文件名以 .jar 或 .zip 结尾,则会被视为 jar 文件,并且 jar 内的每个 .class 文件都会被反汇编。

--out 选项控制输出位置。如果 --out 值是一个目录,输出将以单独文件形式放在该目录下。否则,如果 --out 值以 .jar 或 .zip 结尾,输出将被打包成单个 zip 文件放在该位置。如果 --out 值以 .j 结尾,输出将写入该文件(注意:单个 .j 文件可以包含多个类——所有类都会被反汇编并依次写入同一文件)。如果省略 --out 选项,反汇编后的类将输出到标准输出。

要按上述描述使用往返模式反汇编,请传递 --roundtrip 选项(或简写 -r)。

汇编

Krakatau 汇编器允许你以人类友好的文本格式编写 Java 字节码,并将其转换为二进制 Java 类文件。

root@kitploit:~
krak2 asm --out temp Krakatau/tests/assembler/good/strictfp.j

你可以汇编单个 .j 文件或整个 jar 文件。如果输入文件名以 .jar 或 .zip 结尾,则会被视为 zip 存档,并且存档内的每个 .j 文件都会被汇编。

--out 选项控制输出位置。如果 --out 值是一个目录,输出将以单独文件形式放在该目录下。否则,如果 --out 值以 .jar 或 .zip 结尾,输出将被打包成单个 zip 文件放在该位置。如果 --out 值以 .class 结尾,单个输出类文件将写入该文件(在这种情况下,如果输入包含多个类,则会报错)。

反编译

v2 反编译器仍在开发中。目前,要使用反编译功能,你需要使用 Krakatau v1。

下载工具