java - 这是什么迷惑行为

标签 java obfuscation

我看到一些 Java 应用程序具有如下代码:

public class Test {
  public Test();
    Code:
       0: aload_0       
       1: invokespecial #1                  // Method     java/lang/Object."":()V
   4: return        

  public static void main(java.lang.String[]);
    Code:
       0: invokestatic  #2                  // Method     printOne:()V
       3: invokestatic  #2                  // Method     printOne:()V
       6: invokestatic  #3                  // Method     printTwo:()V
       9: return        

  public static void printOne();
    Code:
       0: getstatic     #4                  // Field     java/lang/System.out:Ljava/io/PrintStream;
       3: ldc           #5                  // String Hello World
       5: invokevirtual #6                  // Method     java/io/PrintStream.println:(Ljava/lang/String;)V
       8: return        

  public static void printTwo();
    Code:
       0: invokestatic  #2                  // Method     printOne:()V
       3: invokestatic  #2                  // Method     printOne:()V
       6: return        
}

我想知道这属于哪种混淆,以及可以混淆 JAR 文件的工具是什么。

最佳答案

在已编译的java类上运行javap -c,您将获得java字节代码。这不是混淆,而是反编译。 IBM 提供的一个非常好的资源是 Java bytecode:Understanding bytecode makes you a better programmer

关于java - 这是什么迷惑行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52518192/

相关文章:

java - 如何在 Java 中创建要打印到 JFrame 的 JLabel 数组

java线程同步问题,如何实现observable线程

java - JPA/Hibernate DDL 生成; CHAR 与 VARCHAR

java - 在Java中初始化编译时已知的静态类变量

c# - 混淆的 DLL 未通过反射加载

安卓 ==> Ant 和混淆器?

c# - 替换多个字符串的更好方法 - C# 中的混淆

java - 使用 JPanel 将 ChartPanel 添加到 JTabbedPane

.net - 混淆混合 .NET DLL 的最佳产品

IBM MobileFirst 6.3 中的混淆