标签: decompiler

为什么反编译的java程序并不总是可以直接编译的,哪些部分是不能直接编译的?

所以我试图对已编译的java程序进行轻微的有效的合法更改。我正在使用 JD-GUI for Mac 反编译它。大多数情况下,反编译的代码是没有错误的,但也有一些奇怪的事情,比如未声明的变量、多个相同的变量声明以及一些不容易编译的奇怪语句。反编译后的代码中一些奇怪的语句着实令人费解。我尤其在使用一个 switch 语句时遇到了麻烦:

    switch ($SWITCH_TABLE$PackageName$ClassName$InnerEnumName()[getPlatform().ordinal()])
Run Code Online (Sandbox Code Playgroud)

其中 PackageName.ClassName 是此语句所在的类,InnerEnumName 是 ClassName 中的内部枚举。另请注意, getPlatform() 是 ClassName 中的一个方法,它返回 InnerEnumName 类型的枚举

奇怪的是,当我刚刚剥离此类有问题的语句、编译它并将其插入到程序中时,它开始工作,但有一些奇怪的错误。例如,当我将 switch 语句更改为

    switch (getPlatform().ordinal())
Run Code Online (Sandbox Code Playgroud)

当它应该遇到情况 4 时(再次出现第四种情况以及值 4 的情况),它开始遇到情况 3(第三种情况和值 3 的情况)

java decompiling decompiler

5
推荐指数
1
解决办法
1991
查看次数

获取函数的 AST

假设我有一个功能:

function hi()
    print('hi')
end
Run Code Online (Sandbox Code Playgroud)

我希望能够将此函数作为参数并对其进行分析,例如列出其中的所有函数调用,查看它引用的所有变量等。

请注意,我不是在谈论分析源代码;而是在谈论分析源代码。我没有函数的源文本,我只有函数对象,即这是在运行时完成的。

我认为你这样做的方法是获取函数的 AST。但我不知道该怎么做。那么我该如何获取函数的 AST(或者如果有更好的方法则对其进行分析)?

lua analysis function abstract-syntax-tree decompiler

5
推荐指数
1
解决办法
2020
查看次数

如何使用 Cutter 或 Radare2 比较两个 EXE 文件、查找差异并反编译它们?

经过几天的努力,我想向社区询问:)

我有两个exe文件。两者大小相同且相当大(约 80MB)。

  • 第一个exe是原始文件,是前段时间编译好的。我也有相应的PDB文件。
  • 第二个文件与第一个文件几乎相同,但已在多个位置进行了二进制修补。

我设法使用 Cutter (Radare2 GUI) 反编译这些文件,但考虑到文件大小,几乎不可能遍历每一种方法。

使用十六进制编辑器(Hex Fiend),我设法获得应用补丁的每个偏移位置。现在我试图用 Cutter 找到这些偏移量来反编译这些位置。

问题是:如何?当我在 Cutter 中打开 Hexdump 时,似乎一切都未就位,我可能需要偏移。在 Cutter 的加载屏幕上设置偏移量似乎没有做任何事情。难道是我用错了?

例子:

妖魔

Offset                Hex Data                                         Text
474942-474956         47 65 74 4D 6F 64 75 6C 65 48 61 6E 64 6C 65 41  GetModuleHandleA
Run Code Online (Sandbox Code Playgroud)

刀具

Offset                Hex Data                                         Text
0x0060713E-0x0060714D 47 65 74 4D 6F 64 75 6C 65 48 61 6E 64 6C 65 41  GetModuleHandleA
Run Code Online (Sandbox Code Playgroud)

474942是0x73F3E,但是距离0x0060713E很远

也许我需要其他工具?任何帮助表示赞赏!

hexdump disassembly decompiler radare2 ghidra

5
推荐指数
0
解决办法
3258
查看次数

这是什么参考?

假设我有这个课程:

public class class1 extends Applet implements Runnable
{
    private String s;
    private URL u;
    ...
}
Run Code Online (Sandbox Code Playgroud)

第二节课:

class TS extends Thread
{
    private final class1 _$97913;
    public TS(class1 paramclass1)
    {
        this._$97913 = paramclass1;
    }
    ...
    public void PostData()
    {
        ...
        class1.access$16(this._$97913, new Socket(class1.access$17(this._$97913), 80);
        ...
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释如何从class1 class1.access$16(this._$97913, new Socket(class1.access$17(this._$97913), 80);引用private URL u;

access$16来自哪里?这叫什么,我在哪里可以了解更多?

好,这是的反编译的代码的结果,是有办法到数字(关联access$16,access$17等)到原始变量或类?从我所看到的,唯一的方法是手动执行(即查看被引用的内容并猜测,因为'此'类接收了一个URL,然后'this'必须与'that'变量相关联)?

java decompiler

4
推荐指数
1
解决办法
3872
查看次数

反编译C#.Net 1.1应用程序的最佳工具

可能重复:
.net反汇编程序/反编译器
是否有.NET Reflector的"免费"替代?

很久以前,我们为客户编写了C#.NET 1.1应用程序,在办公室搬迁和裁员过程中,源代码未检入Source Safe.

客户现在报告了一个问题,我们不想从头开始重写应用程序.

我相信我们应该能够通过反编译可执行文件来获取源代码.任何人都可以推荐一个好的工具(最好是免费的).

当我们首先编写应用程序时,我不认为反编译会有任何法律问题,但如果我错了请纠正我.

c# .net-1.1 decompiler

4
推荐指数
1
解决办法
9731
查看次数

从x86程序集文件解压缩

我有一个x86程序集的程序,我想反编译为更高级别的语言.我为此目的检查了回旋镖,但它似乎只需要二进制文件作为输入.我有什么选择?

c assembly decompiling x86-64 decompiler

4
推荐指数
1
解决办法
6652
查看次数

用于反编译jar或类文件的程序

我希望反编译一个完整的.jar文件或简单的.class文件.

我一直在谷歌周围约一个小时,并且似乎找到任何工具来帮助我.

我发现的大多数工具要么过时,要么不起作用.

我也从stackoverflow 发现了这篇文章,但遗憾的是所有建议的程序都无法下载或过时.

java decompiler

4
推荐指数
1
解决办法
2万
查看次数

Is it possible to change a value inside a Lua bytecode? How? Any idea?

I got a script that is no longer supported and I'm looking for a way to change the value of a variable in it... The script is encrypted (loadstring/bytecode/something like that) e.g.: loadstring('\27\76\117\97\81\0\1\4\4\4\8\0\')

我可以找到我想要更改的内容(在编译脚本后通过记事本),但是如果我尝试更改值,脚本将无法工作,如果我更改并尝试重新编译它仍然无法工作: "luac: Testing09.lua: unexpected end in precompiled chunk" ...

有任何想法吗?我用一个程序做了类似的事情,使用ollydbg,但我不能用lua脚本...我有点迷失在这里,做一些谷歌搜索相当一段时间找不到方法......任何想法?

lua bytecode recompile decompiler

4
推荐指数
1
解决办法
885
查看次数

以编程方式反编译.class文件

我目前正在从事一个项目,该项目要求我以编程方式将.class文件反编译为Java文件。IE浏览器我有一个程序,应该读取一个类文件并对其进行反编译,并将生成的Java源代码写入文件中。请帮我做。
编辑:我是反编译器世界的全新手。我已经看过一些API,但是我不知道到底该如何使用以及使用哪个API。任何形式的帮助将是非常可观的
编辑:
我尝试使用:

import com.strobel.decompiler.*;
import java.io.*;
public class JavaDecode {
public static void main(String[] args)throws Exception {
decompileee();
}

private static void decompileee()throws Exception
{
final DecompilerSettings settings = DecompilerSettings.javaDefaults();
final FileOutputStream stream = new FileOutputStream("C:/jp/decompiled.java");
final OutputStreamWriter writer = new OutputStreamWriter(stream); 
Decompiler.decompile("C:/jp/X.class",
new PlainTextOutput(writer),
settings
);
System.out.println("Success");
}
}
Run Code Online (Sandbox Code Playgroud)

但是上面的代码只是在指定的目录中创建了一个名为“ decompiled.java”的文件。但是该文件是空文件。

java decompiler

4
推荐指数
1
解决办法
2157
查看次数

反编译Python 3.5 .pyc

我一直在寻找并且无法找到任何可以帮助我反编译Python 3.5的东西.有谁知道吗?

decompiler python-3.x python-3.5

4
推荐指数
1
解决办法
1万
查看次数