我在学习一个android版软件的时候,反编译后,有几个函数是字节码,看不懂,拜托大牛们,给解释解释,谢谢~
public SecretKey readKey(java.io.InputStream paramInputStream)
{
// Byte code:
// 0: aconst_null
// 1: astore_2
// 2: aload_1
// 3: ifnonnull +9 -> 12
// 6: aconst_null
// 7: astore 9
// 9: aload 9
// 11: areturn
// 12: new 145 java/io/ObjectInputStream
// 15: dup
// 16: aload_1
// 17: invokespecial 148 java/io/ObjectInputStream:<init> (Ljava/io/InputStream;)V
// 20: astore_3
// 21: aload_3
// 22: invokevirtual 152 java/io/ObjectInputStream:readObject ()Ljava/lang/Object;
// 25: checkcast 154 javax/crypto/SecretKey
// 28: astore 8
// 30: aload_3
// 31: invokevirtual 157 java/io/ObjectInputStream:close ()V
// 34: aload_1
// 35: invokevirtual 160 java/io/InputStream:close ()V
// 38: aload 8
// 40: astore 9
// 42: goto -33 -> 9
// 45: astore 5
// 47: new 33 java/lang/Exception
// 50: dup
// 51: ldc 162
// 53: aload 5
// 55: invokespecial 165 java/lang/Exception:<init> (Ljava/lang/String;Ljava/lang/Throwable;)V
// 58: athrow
// 59: astore 6
// 61: aload_2
// 62: ifnull +7 -> 69
// 65: aload_2
// 66: invokevirtual 157 java/io/ObjectInputStream:close ()V
// 69: aload_1
// 70: invokevirtual 160 java/io/InputStream:close ()V
// 73: aload 6
// 75: athrow
// 76: astore 7
// 78: aload_3
// 79: astore_2
// 80: aload 7
// 82: astore 6
// 84: goto -23 -> 61
// 87: astore 4
// 89: aload_3
// 90: astore_2
// 91: aload 4
// 93: astore 5
// 95: goto -48 -> 47
//
// Exception table:
// from to target type
// 12 21 45 java/lang/Exception
// 12 21 59 finally
// 47 59 59 finally
// 21 30 76 finally
// 21 30 87 java/lang/Exception
}
// ERROR //
public SecretKey readKey(String paramString)
{
// Byte code:
// 0: aconst_null
// 1: astore_2
// 2: aload_1
// 3: ifnull +10 -> 13
// 6: aload_1
// 7: invokevirtual 169 java/lang/String:length ()I
// 10: ifgt +7 -> 17
// 13: aconst_null
// 14: astore_3
// 15: aload_3
// 16: areturn
// 17: new 171 java/io/FileInputStream
// 20: dup
// 21: aload_1
// 22: invokespecial 172 java/io/FileInputStream:<init> (Ljava/lang/String;)V
// 25: astore 4
// 27: new 145 java/io/ObjectInputStream
// 30: dup
// 31: aload 4
// 33: invokespecial 148 java/io/ObjectInputStream:<init> (Ljava/io/InputStream;)V
// 36: astore 5
// 38: aload 5
// 40: invokevirtual 152 java/io/ObjectInputStream:readObject ()Ljava/lang/Object;
// 43: checkcast 154 javax/crypto/SecretKey
// 46: astore 10
// 48: aload 5
// 50: invokevirtual 157 java/io/ObjectInputStream:close ()V
// 53: aload 4
// 55: invokevirtual 173 java/io/FileInputStream:close ()V
// 58: aload 10
// 60: astore_3
// 61: goto -46 -> 15
// 64: astore 7
// 66: aconst_null
// 67: astore 5
// 69: new 33 java/lang/Exception
// 72: dup
// 73: ldc 162
// 75: aload 7
// 77: invokespecial 165 java/lang/Exception:<init> (Ljava/lang/String;Ljava/lang/Throwable;)V
// 80: athrow
// 81: astore 8
// 83: aload 5
// 85: ifnull +8 -> 93
// 88: aload 5
// 90: invokevirtual 157 java/io/ObjectInputStream:close ()V
// 93: aload_2
// 94: ifnull +7 -> 101
// 97: aload_2
// 98: invokevirtual 173 java/io/FileInputStream:close ()V
// 101: aload 8
// 103: athrow
// 104: astore 8
// 106: aconst_null
// 107: astore 5
// 109: goto -26 -> 83
// 112: astore 12
// 114: aconst_null
// 115: astore 5
// 117: aload 4
// 119: astore_2
// 120: aload 12
// 122: astore 8
// 124: goto -41 -> 83
// 127: astore 9
// 129: aload 4
// 131: astore_2
// 132: aload 9
// 134: astore 8
// 136: goto -53 -> 83
// 139: astore 11
// 141: aconst_null
// 142: astore 5
// 144: aload 4
// 146: astore_2
// 147: aload 11
// 149: astore 7
// 151: goto -82 -> 69
// 154: astore 6
// 156: aload 4
// 158: astore_2
// 159: aload 6
// 161: astore 7
// 163: goto -94 -> 69
//
// Exception table:
// from to target type
// 17 27 64 java/lang/Exception
// 69 81 81 finally
// 17 27 104 finally
// 27 38 112 finally
// 38 48 127 finally
// 27 38 139 java/lang/Exception
// 38 48 154 java/lang/Exception
}
// ERROR //
public void saveDesKey(SecretKey paramSecretKey, String paramString)
{
// Byte code:
// 0: aconst_null
// 1: astore_3
// 2: aload_1
// 3: ifnull +40 -> 43
// 6: new 177 java/io/FileOutputStream
// 9: dup
// 10: aload_2
// 11: invokespecial 178 java/io/FileOutputStream:<init> (Ljava/lang/String;)V
// 14: astore 4
// 16: new 180 java/io/ObjectOutputStream
// 19: dup
// 20: aload 4
// 22: invokespecial 183 java/io/ObjectOutputStream:<init> (Ljava/io/OutputStream;)V
// 25: astore 5
// 27: aload 5
// 29: aload_1
// 30: invokevirtual 187 java/io/ObjectOutputStream:writeObject (Ljava/lang/Object;)V
// 33: aload 4
// 35: invokevirtual 188 java/io/FileOutputStream:close ()V
// 38: aload 5
// 40: invokevirtual 189 java/io/ObjectOutputStream:close ()V
// 43: return
// 44: astore 7
// 46: aconst_null
// 47: astore 5
// 49: new 33 java/lang/Exception
// 52: dup
// 53: aload 7
// 55: invokespecial 192 java/lang/Exception:<init> (Ljava/lang/Throwable;)V
// 58: athrow
// 59: astore 8
// 61: aload_3
// 62: ifnull +7 -> 69
// 65: aload_3
// 66: invokevirtual 188 java/io/FileOutputStream:close ()V
// 69: aload 5
// 71: ifnull +8 -> 79
// 74: aload 5
// 76: invokevirtual 189 java/io/ObjectOutputStream:close ()V
// 79: aload 8
// 81: athrow
// 82: astore 8
// 84: aconst_null
// 85: astore 5
// 87: goto -26 -> 61
// 90: astore 11
// 92: aconst_null
// 93: astore 5
// 95: aload 4
// 97: astore_3
// 98: aload 11
// 100: astore 8
// 102: goto -41 -> 61
// 105: astore 9
// 107: aload 4
// 109: astore_3
// 110: aload 9
// 112: astore 8
// 114: goto -53 -> 61
// 117: astore 10
// 119: aconst_null
// 120: astore 5
// 122: aload 4
// 124: astore_3
// 125: aload 10
// 127: astore 7
// 129: goto -80 -> 49
// 132: astore 6
// 134: aload 4
// 136: astore_3
// 137: aload 6
// 139: astore 7
// 141: goto -92 -> 49
//
// Exception table:
// from to target type
// 6 16 44 java/io/IOException
// 49 59 59 finally
// 6 16 82 finally
// 16 27 90 finally
// 27 33 105 finally
// 16 27 117 java/io/IOException
// 27 33 132 java/io/IOException
}
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课