共计 1074 个字符,预计需要花费 3 分钟才能阅读完成。
对一个 jar 进行反编译,发现有些代码并没有生成 java 代码,而是这样的结果:
/* JADX WARNING: Code restructure failed: missing block: B:4:0x0007, code lost:
r2 = Companion.getClipDataUris$activity_release(r3);
*/
/* Code decompiled incorrectly, please refer to instructions dump. */
public final java.util.List parseResult(int r2, android.content.Intent r3) {
/*
r1 = this;
r0 = -1
if (r2 != r0) goto L_0x0004
goto L_0x0005
L_0x0004:
r3 = 0
L_0x0005:
if (r3 == 0) goto L_0x0010
androidx.activity.result.contract.ActivityResultContracts$GetMultipleContents$Companion r2 = Companion
java.util.List r2 = r2.getClipDataUris$activity_release(r3)
if (r2 == 0) goto L_0x0010
goto L_0x0014
L_0x0010:
java.util.List r2 = kotlin.collections.CollectionsKt.emptyList()
L_0x0014:
return r2
*/
throw new UnsupportedOperationException("Method not decompiled: androidx.activity.result.contract.ActivityResultContracts.GetMultipleContents.parseResult(int, android.content.Intent):java.util.List");
}
两个问题:
- 什么情况下会出现这种问题,比如注释中写明了 Code restructure failed: misseing block,那是不是我们估计构造这样的代码可以增加反编译难度;
- 经常发现代码反编译不成功的额时候,会用一段注释将其描述出来,这段描述也不是标准的字节码,那重新对这个 java 文件直接进行编译能够得到原来的 class 文件么?
- 有没有办法指定给反编译器,当反编译为 java 不成功的时候,直接使用字节码反编译,方便后续再次编译为 class?
感谢
正文完