问题标签 [jd-gui]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8001 浏览

java - 如何使用 JD-GUI 从反编译的 JAR 重新创建项目链接?

我有一个旧的 .JAR 文件。我可以用 JD-GUI 反编译它,但这给了我一组类文件。我正在尝试遵循代码,但各个类之间的联系有限。

我可以手动跟踪代码,但有没有办法“重新链接”或创建项目,以便我可以更轻松地导航。

JD-GUI 在为某些类添加下划线时会部分执行此操作,但仅将我带到该类。我想直接进入声明或查看所有用法。

0 投票
3 回答
1558 浏览

eclipse - 在 Eclipse 中删除 1000 条评论?

我安装了 JD-GUI 以从 jar 文件中检索我的代码。一切正常,除了 JD-GUI 自动添加恼人的注释,如下所示:

在此处输入图像描述

有什么办法可以删除它们?我不明白正则表达式。

0 投票
1 回答
3786 浏览

java - 为什么 JD-GUI 在每一行都加上注释和行号?

我已经多次遇到这个问题。每当我使用 JD-GUI 反编译某些东西并保存所有源代码时,它都会在每一行前面加上一个块注释,并在方法体中插入代码的行号。这是我刚刚反编译的 jar 中的一个示例:

这似乎是 JD-GUI 必须阻止人们使用他们通过编译获得的源文件的功能。我可以使用 bash 命令相当轻松地删除所有这些注释,但这仍然很烦人。有没有办法禁用此功能?

0 投票
1 回答
11257 浏览

java - 从jar中重新编译JD-GUI反编译的java文件

我有一个 MyFile.jar 文件。我使用 JD-GUI 对其进行反编译,并使用其“保存所有源”选项将文件保存为 .zip 文件。现在解压缩 .zip 文件并编辑一个 .java 文件。

解压 .zip 文件后的文件夹结构是这样的

现在我如何将它重新编译回 .jar 文件?

0 投票
0 回答
469 浏览

jd-gui - 无法使用 JD-GUI 较新版本探索 java.util、java.time 或 java.lang 包 (rt.jar)

低于 0.3.2 版本的 JD-GUI 能够浏览这些包,但高于 0.3.1 到 0.3.7 RC1 的所有版本都会出现此错误(从左侧树视图窗口浏览或使用 Ctrl+Shift+T):

“发生未处理的异常。按“Abort”终止程序,“Retry”正常退出程序,“Ignore”尝试继续。”

任何人都可以分享我可以下载 0.3 以下版本的 jd-gui 的链接。

0 投票
3 回答
720 浏览

java - JD-GUI 中关于变量名的错误

使用 JD-GUI 查看 jar 文件时,我不断收到某种显示错误。它似乎将变量名/标识符替换为符号����(在 JD-GUI 中看起来像一个红色的雪人,附上图片)。知道如何解决这个问题吗?我试着用谷歌搜索,但不能很好地描述我的情况,因此找不到有同样问题的人。提前致谢!在此处输入图像描述

0 投票
3 回答
1658 浏览

java - .class 文件不包含变量名称,尽管创建这些名称的设置已激活

我试图找出 .class 文件出现奇怪效果的原因。似乎对于接口,传递给函数的变量的名称没有列出,但在实现类中却列出了。我在使用 JD-Gui 反编译我自己的一些类文件时偶然发现了这种效果。

我用这两个文件检查了这个:

人.java

PersonImpl.java

JD-Gui 在反编译时返回:

界面仅显示通用变量类型信息

实现类显示“真实”变量名

使用javap -verbose x.class我得到类似的结果:打印的方法签名从接口到实现类不同。一个错过了我在源代码中指定的变量名,另一个有它们。

我试图回答我研究Java 虚拟机规范的问题,但不得不承认我未能通过本文档找到方法。

这样设计有什么原因吗?

编辑:

由于我收到了所有好的答案,我在接口和实现类中添加了一些行,以支持答案中的陈述:s

人.java

JD-Gui 能够确定参数的名称:

JD-Gui 能够显示变量的名称

JavaP 能够在 LocalVariableTable 中列出它:

javap 显示的变量名

当我向实现类添加一个抽象方法并使整个类抽象时(我需要这样做,因为它包含一个抽象方法)......

PersonImpl.java

...然后JD-Gui 无法反编译这个类文件。但幸运的是 javap 仍然能够转储文件。所有非抽象的方法都保留它们的 LocalVariableTable。抽象方法有签名,但既没有 Code,也没有 Lines,甚至没有 LocalVariableTable(这是预期的)

从 javap 转储 PersonImpls 抽象方法

0 投票
0 回答
1314 浏览

java - 无法使用 Jd-GUI java 反编译器打开 zip 文件

我正在尝试使用 Jd GUI 0.3.5 保存所有来源。我在 mac 上并安装了最新的 Java 8。

当我单击保存所有源时,将创建 zip 文件。

但是当我双击它时。它说

单个文件工作正常

更新

我的意思是我正在反编译 .class 文件。当我打开一个类文件时,它会在左侧栏中显示完整的 com 包。然后我在树中选择该 com,然后在上面的选项中选择。它说保存所有来源。然后它显示导出进度条,说正在导出到 class.src.zip。然后,当我双击该 zip 文件时,我得到错误。如果我保存单个类文件,那么它可以保存为 .java 但不是整个包。该 packagegae 不是 jar 格式,而是带有类文件的打开文件夹

0 投票
1 回答
865 浏览

java - 为什么 .classes 文件在 .jar 文件中有奇怪的名称?

我使用 JD-GUI 反编译了一个 .jar 文件,以及许多奇怪地命名为abc、等的包d。类也一样,所以一些.class文件也被命名为a.classb.class依此类推。

我不相信开发人员以这样一种方式命名包或 Java 文件,以至于他们以后无法识别每个文件的作用。我相信这是因为其他一些技术问题。有人可以清楚这个问题吗?

0 投票
1 回答
116 浏览

android - 从 apk 中提取的代码显示了一些 java 代码错误

我最近读到了逆向工程的概念,并想尝试一下。

所以我下载了一个apk并使用它提取了它的源代码

apktool、dex2jar 和 jd-gui

一切都进行得很顺利,我成功地提取了资源和 java 文件。但是,当我尝试在 android studio 中导入这个项目时,问题就出现了。

最初它显示了一些与资源文件相关的错误,我通过更改项目的依赖项进行了更正,但现在我在 java 文件中遇到了所有这些奇怪的错误。

错误包括“不是语句”、“变量未初始化”等。

请帮助。提前致谢!