apk - 如何解码那些 JD-GUI 错误反编译的字节码

标签 apk bytecode jd-gui

我想反编译一个 apk 文件以查看其源代码的某些部分,但是当我到达我感兴趣的部分时,JD-GUI 给出了以下反编译代码

  /* Error */
  public void loginV2(Context paramContext, String paramString1, int paramInt, String paramString2, String paramString3, String paramString4, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
  {
    // Byte code:
    //   0: new 20  java/lang/StringBuilder
    //   3: dup
    //   4: getstatic 91    com/ipanel/join/homed/mobile/myt/Config:SERVER_ACCESS   Ljava/lang/String;
    //   7: invokestatic 32 java/lang/String:valueOf    (Ljava/lang/Object;)Ljava/lang/String;
    //   10: invokespecial 35   java/lang/StringBuilder:<init>  (Ljava/lang/String;)V
    //   13: ldc_w 491
    //   16: invokevirtual 41   java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   19: invokevirtual 45   java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   22: astore 10
    //   24: new 226    cn/ipanel/android/net/http/AsyncHttpClient
    //   27: dup
    //   28: invokespecial 227  cn/ipanel/android/net/http/AsyncHttpClient:<init>   ()V
    //   31: astore 11
    //   33: new 429    org/json/JSONObject
    //   36: dup
    //   37: invokespecial 430  org/json/JSONObject:<init>  ()V
    //   40: astore 12
    //   42: aconst_null
    //   43: astore 9
    //   45: aconst_null
    //   46: astore 8
    //   48: new 20 java/lang/StringBuilder
    //   51: dup
    //   52: invokespecial 169  java/lang/StringBuilder:<init>  ()V
    //   55: aload_1
    //   56: invokestatic 300   com/ipanel/join/homed/mobile/myt/utils/DeviceUtils:getDeviceId  (Landroid/content/Context;)Ljava/lang/String;
    //   59: invokevirtual 41   java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   62: invokevirtual 45   java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   65: astore 13
    //   67: new 20 java/lang/StringBuilder
    //   70: dup
    //   71: aload 13
    //   73: invokestatic 32    java/lang/String:valueOf    (Ljava/lang/Object;)Ljava/lang/String;
    //   76: invokespecial 35   java/lang/StringBuilder:<init>  (Ljava/lang/String;)V
    //   79: aload 13
    //   81: invokestatic 497   com/ipanel/join/homed/helper/OperationUtils:getMD5  (Ljava/lang/String;)Ljava/lang/String;
    //   84: bipush 7
    //   86: bipush 8
    //   88: invokevirtual 501  java/lang/String:substring  (II)Ljava/lang/String;
    //   91: invokevirtual 41   java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   94: invokevirtual 45   java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   97: astore 13
    //   99: invokestatic 506   java/util/Calendar:getInstance  ()Ljava/util/Calendar;
    //   102: invokevirtual 510 java/util/Calendar:getTimeInMillis  ()J
    //   105: lstore 14
    //   107: aload 12
    //   109: ldc_w 294
    //   112: aload 13
    //   114: invokevirtual 435 org/json/JSONObject:put (Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
    //   117: pop
    //   118: aload 12
    //   120: ldc_w 302
    //   123: aload_2
    //   124: invokevirtual 435 org/json/JSONObject:put (Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
    //   127: pop
    //   128: aload 12
    //   130: ldc_w 469
    //   133: iload_3
    //   134: invokevirtual 513 org/json/JSONObject:put (Ljava/lang/String;I)Lorg/json/JSONObject;
    //   137: pop
    //   138: aload 12
    //   140: ldc_w 467
    //   143: aload 4
    //   145: invokevirtual 435 org/json/JSONObject:put (Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
    //   148: pop
    //   149: aload 12
    //   151: ldc_w 515
    //   154: aload 5
    //   156: invokestatic 497  com/ipanel/join/homed/helper/OperationUtils:getMD5  (Ljava/lang/String;)Ljava/lang/String;
    //   159: invokevirtual 435 org/json/JSONObject:put (Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
    //   162: pop
    //   163: aload 6
    //   165: invokestatic 112  android/text/TextUtils:isEmpty  (Ljava/lang/CharSequence;)Z
    //   168: ifne +13 -> 181
    //   171: aload 12
    //   173: ldc 99
    //   175: aload 6
    //   177: invokevirtual 435 org/json/JSONObject:put (Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
    //   180: pop
    //   181: aload 12
    //   183: ldc_w 517
    //   186: new 20    java/lang/StringBuilder
    //   189: dup
    //   190: invokespecial 169 java/lang/StringBuilder:<init>  ()V
    //   193: lload 14
    //   195: invokevirtual 520 java/lang/StringBuilder:append  (J)Ljava/lang/StringBuilder;
    //   198: invokevirtual 45  java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   201: invokevirtual 435 org/json/JSONObject:put (Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
    //   204: pop
    //   205: aload 12
    //   207: ldc_w 522
    //   210: ldc 124
    //   212: invokevirtual 435 org/json/JSONObject:put (Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
    //   215: pop
    //   216: aload 12
    //   218: ldc_w 524
    //   221: new 20    java/lang/StringBuilder
    //   224: dup
    //   225: aload 13
    //   227: invokestatic 32   java/lang/String:valueOf    (Ljava/lang/Object;)Ljava/lang/String;
    //   230: invokespecial 35  java/lang/StringBuilder:<init>  (Ljava/lang/String;)V
    //   233: ldc_w 526
    //   236: invokevirtual 41  java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   239: aload_2
    //   240: invokevirtual 41  java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   243: ldc_w 526
    //   246: invokevirtual 41  java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   249: iload_3
    //   250: invokevirtual 176 java/lang/StringBuilder:append  (I)Ljava/lang/StringBuilder;
    //   253: ldc_w 526
    //   256: invokevirtual 41  java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   259: aload 4
    //   261: invokevirtual 41  java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   264: ldc_w 526
    //   267: invokevirtual 41  java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   270: lload 14
    //   272: invokevirtual 520 java/lang/StringBuilder:append  (J)Ljava/lang/StringBuilder;
    //   275: invokevirtual 45  java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   278: invokestatic 497  com/ipanel/join/homed/helper/OperationUtils:getMD5  (Ljava/lang/String;)Ljava/lang/String;
    //   281: invokevirtual 435 org/json/JSONObject:put (Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
    //   284: pop
    //   285: new 223   org/apache/http/entity/StringEntity
    //   288: dup
    //   289: aload 12
    //   291: invokevirtual 438 org/json/JSONObject:toString    ()Ljava/lang/String;
    //   294: ldc_w 440
    //   297: invokespecial 442 org/apache/http/entity/StringEntity:<init>  (Ljava/lang/String;Ljava/lang/String;)V
    //   300: astore_2
    //   301: getstatic 448 java/lang/System:out    Ljava/io/PrintStream;
    //   304: new 20    java/lang/StringBuilder
    //   307: dup
    //   308: ldc_w 450
    //   311: invokespecial 35  java/lang/StringBuilder:<init>  (Ljava/lang/String;)V
    //   314: aload 12
    //   316: invokevirtual 438 org/json/JSONObject:toString    ()Ljava/lang/String;
    //   319: invokevirtual 41  java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   322: invokevirtual 45  java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   325: invokevirtual 455 java/io/PrintStream:println (Ljava/lang/String;)V
    //   328: aload 11
    //   330: aload_1
    //   331: aload 10
    //   333: aload_2
    //   334: ldc -27
    //   336: aload 7
    //   338: invokevirtual 233 cn/ipanel/android/net/http/AsyncHttpClient:post (Landroid/content/Context;Ljava/lang/String;Lorg/apache/http/HttpEntity;Ljava/lang/String;Lcn/ipanel/android/net/http/AsyncHttpResponseHandler;)V
    //   341: return
    //   342: astore 4
    //   344: aload 8
    //   346: astore_2
    //   347: aload 4
    //   349: invokevirtual 456 org/json/JSONException:printStackTrace  ()V
    //   352: goto -24 -> 328
    //   355: astore 4
    //   357: aload 9
    //   359: astore_2
    //   360: aload 4
    //   362: invokevirtual 236 java/io/UnsupportedEncodingException:printStackTrace    ()V
    //   365: goto -37 -> 328
    //   368: astore 4
    //   370: goto -10 -> 360
    //   373: astore 4
    //   375: goto -28 -> 347
    // Local variable table:
    //   start  length  slot    name    signature
    //   0  378 0   this    APIManager
    //   0  378 1   paramContext    Context
    //   0  378 2   paramString1    String
    //   0  378 3   paramInt    int
    //   0  378 4   paramString2    String
    //   0  378 5   paramString3    String
    //   0  378 6   paramString4    String
    //   0  378 7   paramAsyncHttpResponseHandler   AsyncHttpResponseHandler
    //   46 299 8   localObject1    Object
    //   43 315 9   localObject2    Object
    //   22 310 10  str1    String
    //   31 298 11  localAsyncHttpClient    AsyncHttpClient
    //   40 275 12  localJSONObject JSONObject
    //   65 161 13  str2    String
    //   105    166 14  l   long
    // Exception table:
    //   from   to  target  type
    //   48 181 342 org/json/JSONException
    //   181    301 342 org/json/JSONException
    //   48 181 355 java/io/UnsupportedEncodingException
    //   181    301 355 java/io/UnsupportedEncodingException
    //   301    328 368 java/io/UnsupportedEncodingException
    //   301    328 373 org/json/JSONException
  }

上网查了一下,发现可能是apk'a作者为了保护JD-GUI反编译代码的关键部分,故意犯了这个错误。

我想问的是
  • 可以理解这些所谓的“字节码”吗?我阅读了代码,虽然我无法完全理解代码,但我认为它仍然保留了实际的代码信息,我在代码中找到了 getMD5 函数,所以有人可以向我解释代码使用哪些参数以及如何执行 MD5 (其实这是我感兴趣的部分)
  • 谁能给我一些建议来帮助我自己理解这些代码,例如,给我一些引用网页链接来理解所谓的“字节码”语言的规范(就像 c++ 或 C#),所以下次也许我可以自己完成工作

  • 谢谢!

    附:
    我尝试了另一个十六进制查看器,并得到以下结果代码
    public void loginV2(final Context p0, final String p1, final int p2, final String p3, final String p4, final String p5, final AsyncHttpResponseHandler p6) {
            // 
            // This method could not be decompiled.
            // 
            // Original Bytecode:
            // 
            //     0: new             Ljava/lang/StringBuilder;
            //     3: dup            
            //     4: getstatic       com/ipanel/join/homed/mobile/myt/Config.SERVER_ACCESS:Ljava/lang/String;
            //     7: invokestatic    java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            //    10: invokespecial   java/lang/StringBuilder.<init>:(Ljava/lang/String;)V
            //    13: ldc_w           "account/user/v2/login"
            //    16: invokevirtual   java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            //    19: invokevirtual   java/lang/StringBuilder.toString:()Ljava/lang/String;
            //    22: astore          8
            //    24: new             Lcn/ipanel/android/net/http/AsyncHttpClient;
            //    27: dup            
            //    28: invokespecial   cn/ipanel/android/net/http/AsyncHttpClient.<init>:()V
            //    31: astore          9
            //    33: new             Lorg/json/JSONObject;
            //    36: dup            
            //    37: invokespecial   org/json/JSONObject.<init>:()V
            //    40: astore          10
            //    42: aconst_null    
            //    43: astore          11
            //    45: new             Ljava/lang/StringBuilder;
            //    48: dup            
            //    49: invokespecial   java/lang/StringBuilder.<init>:()V
            //    52: aload_1        
            //    53: invokestatic    com/ipanel/join/homed/mobile/myt/utils/DeviceUtils.getDeviceId:(Landroid/content/Context;)Ljava/lang/String;
            //    56: invokevirtual   java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            //    59: invokevirtual   java/lang/StringBuilder.toString:()Ljava/lang/String;
            //    62: astore          14
            //    64: new             Ljava/lang/StringBuilder;
            //    67: dup            
            //    68: aload           14
            //    70: invokestatic    java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            //    73: invokespecial   java/lang/StringBuilder.<init>:(Ljava/lang/String;)V
            //    76: aload           14
            //    78: invokestatic    com/ipanel/join/homed/helper/OperationUtils.getMD5:(Ljava/lang/String;)Ljava/lang/String;
            //    81: bipush          7
            //    83: bipush          8
            //    85: invokevirtual   java/lang/String.substring:(II)Ljava/lang/String;
            //    88: invokevirtual   java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            //    91: invokevirtual   java/lang/StringBuilder.toString:()Ljava/lang/String;
            //    94: astore          15
            //    96: invokestatic    java/util/Calendar.getInstance:()Ljava/util/Calendar;
            //    99: invokevirtual   java/util/Calendar.getTimeInMillis:()J
            //   102: lstore          16
            //   104: aload           10
            //   106: ldc_w           "deviceno"
            //   109: aload           15
            //   111: invokevirtual   org/json/JSONObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
            //   114: pop            
            //   115: aload           10
            //   117: ldc_w           "devicetype"
            //   120: aload_2        
            //   121: invokevirtual   org/json/JSONObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
            //   124: pop            
            //   125: aload           10
            //   127: ldc_w           "accounttype"
            //   130: iload_3        
            //   131: invokevirtual   org/json/JSONObject.put:(Ljava/lang/String;I)Lorg/json/JSONObject;
            //   134: pop            
            //   135: aload           10
            //   137: ldc_w           "account"
            //   140: aload           4
            //   142: invokevirtual   org/json/JSONObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
            //   145: pop            
            //   146: aload           10
            //   148: ldc_w           "pwd"
            //   151: aload           5
            //   153: invokestatic    com/ipanel/join/homed/helper/OperationUtils.getMD5:(Ljava/lang/String;)Ljava/lang/String;
            //   156: invokevirtual   org/json/JSONObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
            //   159: pop            
            //   160: aload           6
            //   162: invokestatic    android/text/TextUtils.isEmpty:(Ljava/lang/CharSequence;)Z
            //   165: ifne            178
            //   168: aload           10
            //   170: ldc             "code"
            //   172: aload           6
            //   174: invokevirtual   org/json/JSONObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
            //   177: pop            
            //   178: aload           10
            //   180: ldc_w           "timestamp"
            //   183: new             Ljava/lang/StringBuilder;
            //   186: dup            
            //   187: invokespecial   java/lang/StringBuilder.<init>:()V
            //   190: lload           16
            //   192: invokevirtual   java/lang/StringBuilder.append:(J)Ljava/lang/StringBuilder;
            //   195: invokevirtual   java/lang/StringBuilder.toString:()Ljava/lang/String;
            //   198: invokevirtual   org/json/JSONObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
            //   201: pop            
            //   202: aload           10
            //   204: ldc_w           "isforce"
            //   207: ldc             "1"
            //   209: invokevirtual   org/json/JSONObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
            //   212: pop            
            //   213: aload           10
            //   215: ldc_w           "signature"
            //   218: new             Ljava/lang/StringBuilder;
            //   221: dup            
            //   222: aload           15
            //   224: invokestatic    java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            //   227: invokespecial   java/lang/StringBuilder.<init>:(Ljava/lang/String;)V
            //   230: ldc_w           "|"
            //   233: invokevirtual   java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            //   236: aload_2        
            //   237: invokevirtual   java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            //   240: ldc_w           "|"
            //   243: invokevirtual   java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            //   246: iload_3        
            //   247: invokevirtual   java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
            //   250: ldc_w           "|"
            //   253: invokevirtual   java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            //   256: aload           4
            //   258: invokevirtual   java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            //   261: ldc_w           "|"
            //   264: invokevirtual   java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            //   267: lload           16
            //   269: invokevirtual   java/lang/StringBuilder.append:(J)Ljava/lang/StringBuilder;
            //   272: invokevirtual   java/lang/StringBuilder.toString:()Ljava/lang/String;
            //   275: invokestatic    com/ipanel/join/homed/helper/OperationUtils.getMD5:(Ljava/lang/String;)Ljava/lang/String;
            //   278: invokevirtual   org/json/JSONObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
            //   281: pop            
            //   282: new             Lorg/apache/http/entity/StringEntity;
            //   285: dup            
            //   286: aload           10
            //   288: invokevirtual   org/json/JSONObject.toString:()Ljava/lang/String;
            //   291: ldc_w           "UTF-8"
            //   294: invokespecial   org/apache/http/entity/StringEntity.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            //   297: astore          26
            //   299: getstatic       java/lang/System.out:Ljava/io/PrintStream;
            //   302: new             Ljava/lang/StringBuilder;
            //   305: dup            
            //   306: ldc_w           "para: "
            //   309: invokespecial   java/lang/StringBuilder.<init>:(Ljava/lang/String;)V
            //   312: aload           10
            //   314: invokevirtual   org/json/JSONObject.toString:()Ljava/lang/String;
            //   317: invokevirtual   java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            //   320: invokevirtual   java/lang/StringBuilder.toString:()Ljava/lang/String;
            //   323: invokevirtual   java/io/PrintStream.println:(Ljava/lang/String;)V
            //   326: aload           26
            //   328: astore          11
            //   330: aload           9
            //   332: aload_1        
            //   333: aload           8
            //   335: aload           11
            //   337: ldc             "text/html"
            //   339: aload           7
            //   341: invokevirtual   cn/ipanel/android/net/http/AsyncHttpClient.post:(Landroid/content/Context;Ljava/lang/String;Lorg/apache/http/HttpEntity;Ljava/lang/String;Lcn/ipanel/android/net/http/AsyncHttpResponseHandler;)V
            //   344: return         
            //   345: astore          13
            //   347: aload           13
            //   349: invokevirtual   org/json/JSONException.printStackTrace:()V
            //   352: goto            330
            //   355: astore          12
            //   357: aload           12
            //   359: invokevirtual   java/io/UnsupportedEncodingException.printStackTrace:()V
            //   362: goto            330
            //   365: astore          12
            //   367: aload           26
            //   369: astore          11
            //   371: goto            357
            //   374: astore          13
            //   376: aload           26
            //   378: astore          11
            //   380: goto            347
            //    Exceptions:
            //  Try           Handler
            //  Start  End    Start  End    Type                                  
            //  -----  -----  -----  -----  --------------------------------------
            //  45     178    345    347    Lorg/json/JSONException;
            //  45     178    355    357    Ljava/io/UnsupportedEncodingException;
            //  178    299    345    347    Lorg/json/JSONException;
            //  178    299    355    357    Ljava/io/UnsupportedEncodingException;
            //  299    326    374    383    Lorg/json/JSONException;
            //  299    326    365    374    Ljava/io/UnsupportedEncodingException;
            // 
            // The error that occurred was:
            // 
            // java.lang.IllegalStateException: Expression is linked from several locations: Label_0330:
            //     at com.strobel.decompiler.ast.Error.expressionLinkedFromMultipleLocations(Error.java:27)
            //     at com.strobel.decompiler.ast.AstOptimizer.mergeDisparateObjectInitializations(AstOptimizer.java:2592)
            //     at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:235)
            //     at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:42)
            //     at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:214)
            //     at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99)
            //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757)
            //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655)
            //     at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532)
            //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499)
            //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141)
            //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130)
            //     at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105)
            //     at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71)
            //     at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59)
            //     at the.bytecode.club.bytecodeviewer.decompilers.ProcyonDecompiler.decompileClassNode(ProcyonDecompiler.java:120)
            //     at the.bytecode.club.bytecodeviewer.gui.ClassViewer$13.doShit(ClassViewer.java:624)
            //     at the.bytecode.club.bytecodeviewer.gui.PaneUpdaterThread.run(PaneUpdaterThread.java:16)
            // 
            throw new IllegalStateException("An error occurred while decompiling this method.");
        }
    

    最佳答案

    在尝试反编译使用 try-with-resources 和 lambdas 的 Java 8 文件时遇到了类似的问题。

    在尝试以下失败后:

  • JD-GUI ( http://jd.benow.ca/ )
  • CFR ( http://www.benf.org/other/cfr/ )
  • jd-cmd ( https://github.com/kwart/jd-cmd )

  • 这个人做到了:
  • 鲁腾 ( https://github.com/deathmarine/Luyten )
  • 关于apk - 如何解码那些 JD-GUI 错误反编译的字节码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44742565/

    相关文章:

    android - 使用 --prod 和 --release 构建 Ionic 3 Angular 4 应用程序时出现空白屏幕

    java - 了解 Java 字节码

    c# - 是否有 .NET 类来处理加密?

    java - JD-GUI反编译后源码有注释

    java - 如何从.class文件获取源代码(class文件版本为1.2)

    java - android apk 中的错误 xml

    java - Android APK 文件的 MD5 校验和不同。为什么?

    android - 只安装一次 Apk

    java - 在 javaagent 中访问 servlet-api

    java - 为什么 AspectJ 会生成一个空的 Annotation 检查?