反编译器尽可能地执行与编译器相反的操作。
我试图通过反编译.class文件来了解Java编译器是如何工作的。我使用了Java反编译器(http://jd.benow.ca/)和showmycode(http://www.showmycode.com/) 他们向我展示
我正在从事java的字节码项目,需要识别三元运算符和嵌套三元运算符。 我有两个问题 如何根据堆栈判断if语句是三元运算符
在更改以下 VB.net 代码时,我看到一些奇怪的行为。这是原始源代码: 私有函数 ValidateSelectedId(ByVal PurposeId As String) As Boolean ...
这是有效的 C# 代码吗? 公开课产品 { [编译器生成] 私有字符串 k__BackingField; [编译器生成] 私人小数
我知道如何在终端中使用 GCC 和 CC 编译 C 和 C++ 源文件,但是我想知道编译后在这些文件中包含密码是否安全。 例如..我检查用户
_ = lambda __ : __import__('zlib').decompress(__import__('base64').b64decode(__[::-1]));exec((_)(b'COt1C9399//PVvqe24fjnz5aWrl/4fdxgbAPaW3PPKZnlaRdXbFPZZpl1565 +5P0pVKEBVwKoPs6XhaWQzKSiIOXIRIQgWaO0d...
可以读取用microsoft Visual C++编译的程序的源代码吗?
我知道有反编译C#程序的工具。使用 microsoft Visual C++ 是否会使代码容易受到逆向工程的影响? 隐藏的最佳工具和编程语言是什么
我正在编写一个简单的C程序,实现一个中序树遍历函数: void inorderTraversal(struct TreeNode* root) { 如果(根== NULL){ 返回; } 中序遍历(...
如何在 Visual Studio Code 中反编译具有正确行号的 Java 类?
我在 macOS 中使用 vscode 版本 1.92.2 以及 Java v0.29.0 扩展包。当我命令 + 单击或右键单击 -> 转到我没有源代码的类的定义时,vscode 将打开...
可以反编译.pyc文件:反编译Python 2.7 .pyc 是否可以“编译” python 文件,从而产生人类无法读取的代码,例如 c++ -> exe 二进制文件? ..不像
_ = lambda __ : __import__('base64').b64decode(__[::-1]);exec((_)(b'=
我创建了一个项目,通过 VS 22 使用了很长时间。我还提供了第三方库的链接,以便使用它们并查看它们的类和方法。 T...
无法在 Eclipse 2023-06 中配置 Java 反编译器
我正在尝试在 Eclipse 2023-06 中配置 Java 反编译器,以便从 JAR 中进入 .class 文件,其中未附加任何源。为此,我安装了增强类反编译...
在jdk8中 我的代码是 公共无效a(){ ArrayList 列表 = new ArrayList<>(); 列表.add(“1”); 列表.add(“2”); 对于 (int i = 0; i ... 在jdk8中 我的代码是 public void a(){ ArrayList<Object> list = new ArrayList<>(); list.add("1"); list.add("2"); for (int i = 0; i < list.size(); i++) { String b1 = String.valueOf(Math.random()); String b2 = ""; Object o = new Object[]{list.get(i)}; log.info(b1); log.info(b2); } for (int i = 0; i < list.size(); i++) { Object o = new Object[]{list.get(i)}; String b1 = String.valueOf(Math.random()); String b2 = ""; log.info(b1); log.info(b2); } } 但是编译结果是(我的反编译结果) public void a() { ArrayList<Object> list = new ArrayList(); list.add("1"); list.add("2"); int i; String b1; for(i = 0; i < list.size(); ++i) { String b1 = String.valueOf(Math.random()); b1 = ""; (new Object[1])[0] = list.get(i); log.info(b1); log.info(b1); } for(i = 0; i < list.size(); ++i) { (new Object[1])[0] = list.get(i); b1 = String.valueOf(Math.random()); String b2 = ""; log.info(b1); log.info(b2); } } 其中第一个代码中的参数 b2 更改为 b1 并在idea中调试,结果正确 我想知道为什么会发生这样的事 Java 中的反编译将类文件读回 .java 源文件。 在反编译过程中,由于编译过程中应用的优化和安全性,变量名称经常会丢失。 反编译的主要目的是理解代码的逻辑而不是重新编译它。有时,您甚至可能会遇到所有变量都可以命名为单个变量的情况,不知道为什么,但我认为其中应用了一些安全性,并且很难阅读和理解。 您应该尝试另一个反编译器以更好地理解反编译,尝试JD-GUI。 Intellij Idea 反编译器是最好的,但它仍然可以实现其目的,使无法访问原始源代码的个人能够理解代码的流程。 如果仔细查看反编译代码,您需要理解b1 = ""可以用String b1 = String.valueOf(Math.random());引用不同的变量。因为在同一个作用域中“不可能”有相同的 b1 变量。反编译器不明白这一点,它只是读取,内存地址 b1 中有一个 XXXX 变量,内存地址 YYYY 中有另一个变量。反编译器尝试找到变量名称并给出 b1,这是不正确的。 而且,不仅是变量,有时循环也可以不同。 希望这有帮助。
如何编写更高效的代码?或者,为什么反编译器生成的代码看起来效率不如我编写的代码? [已关闭]
在编写我的库时,我使用了一系列三元表达式: 公共 INumber Level1() { INumber 编号 = Level2(); 下一个(); 返回 txt==“-”? 新的减法(数字,列夫...
在编写我的库时,我使用了一系列三元表达式: 然而,当我反编译代码时,我发现它变成了一个糟糕的实现(在我看来): 当我测试我的代码时,测试通过了...
当我使用 ctrl + 右键单击打开特定类时,我应该被重定向到一个包含 java 源代码的窗口,其中包含所有行和适当的注释。但相反,我得到了一个无线...
我最近在工作中遇到了一个问题,我的项目的解决方案文件丢失了,但我仍然拥有项目/解决方案生成的可执行文件。已收藏...
我有自己用 kotlin 开发的 Android 应用程序。在我使用下面的 adb 命令从物理 Android 设备中提取我的 apk 后,我丢失了所有源代码(硬盘崩溃) - c:\> adb shell pm...
几年前我编写了一个很好的 ARM 汇编程序例程,多年来它在其设计的 ARM 嵌入式系统上完美地完成了它的工作。现在,是时候将其移植到 no...