gpt4 book ai didi

java - 如何使用 Storyyeller/Krakatau 反编译 .class 和 jar 文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:11:32 24 4
gpt4 key购买 nike

我正在尝试使用 Storyyeller/Krakatau 反编译器反编译一个文件。我已经下载了相关文件并将其放在一个文件夹中。我尝试使用命令提示符使用以下语法反编译文件。

===反编译===

用法:

python Krakatau\decompile.py [-nauto] [-path PATH] [-out OUT] [-r] [-skip]
target

PATH:要搜索的目录、jar 或 zip 文件的可选列表 中的类。Krakatau 将尝试自动检测并添加 jar 包含核心语言类,但你可以禁用它 -nauto 选项。对于多个 jar ,您可以传递一个分号 分隔的 jar 列表或多次传递 -path 选项。

OUT:要写入源文件的目录名。默认为 当前目录。如果名称以 .zip 或 .jar 结尾,输出将是 zip 文件。

-r:反编译在目标目录中找到的所有 .class 文件(递归)

-skip:出错时继续。如果在反编译特定的过程中发生错误 方法,追溯将作为注释打印在源文件中。如果 在类级别反编译时发生错误,不会有源文件 发出错误消息并将打印到控制台。

目标: 要反编译的类名或 jar 名。如果指定了 jar,则所有 jar 中的类将被反编译。如果指定了 -r,这应该 是一个目录。

但是我总是出错。我不明白上面的语法。

请解释这个语法

python Krakatau\decompile.py [-nauto] [-path PATH] [-out OUT] [-r] [-skip]
target

使用一个简单的例子。

最佳答案

用 Krakatau 反编译最简单和正常的方法是反编译一个 jar。

假设您在当前目录中有一个名为 Luyten.jar 的 jar 文件,您想要反编译 jar 中的每个类并将其输出到目录 temp。然后你会做类似的事情

pypy -O Krakatau\decompile.py -skip -out temp Luyten.jar

根据您是否安装了 JDK 以及安装位置,您可能需要在路径参数中显式传递 jre 的位置。例如

pypy -O Krakatau\decompile.py -skip -out temp -path "C:\Program Files (x86)\Java\jre7\lib\rt.jar" Luyten.jar

如果你想反编译jar中的特定类,你可以将jar添加到路径中并指定类名。如果您需要像前面的示例一样指定 rt.jar 的路径,您可以多次传递 -path 参数,或者一次传递,以分号分隔。例如只反编译类 com.beust.jcommander.FuzzyMap$IKey,

pypy -O Krakatau\decompile.py -skip -out temp -path Luyten.jar com.beust.jcommander.FuzzyMap$IKey

您也可以反编译 jar 之外的类文件,但这更烦人,因为您必须确保目录布局正确。您需要指定相对于类所在位置的根目录。

例如,假设您有一个位于 ./Foo/Bar/com/beust/jcommander/FuzzyMap$IKey.class 的类文件

pypy -O Krakatau\decompile.py -skip -out temp -path Foo/Bar com.beust.jcommander.FuzzyMap$IKey

在这种情况下,目录必须与完全限定的类名完全匹配。一个常见的错误是尝试使用错误的根目录进行反编译。 jars 的好处是自动拥有正确的目录结构。

关于java - 如何使用 Storyyeller/Krakatau 反编译 .class 和 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27340147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com