这是什么迷惑

我看到一些 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 文件。


冉冉说
浏览 132回答 2
2回答

Cats萌萌

javap -c在已编译的 java 类上运行,您将获得 java 字节码。这不是混淆,而是反编译。

30秒到达战场

这就是javac生成的 - java代码的编译器。将其转换为代码实际上非常容易:public class Test {   // an implicit constructor:   public Test(){   }   public static void testOne(){      System.out.println("Hello World");   }   public static String testTwo(){      testOne();      testOne();   }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java