Что это за запутанность - PullRequest
       5

Что это за запутанность

0 голосов
/ 26 сентября 2018

Я видел некоторые приложения 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 таким образом.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

это то, что 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();
   }

}
0 голосов
/ 26 сентября 2018

Запустите javap -c для скомпилированного Java-класса, и вы получите байт-код Java.Это не запутывание, скорее декомпиляция.Довольно хороший ресурс от IBM - байт-код Java: понимание байт-кода делает вас лучшим программистом

...