java - 反编译器输出中的 Unreachable 语句

标签 java android decompiling dex2jar

我反编译了一个APK文件,然后尝试编译它并收到“无法访问的语句”编译器错误,我想知道这是混淆器技巧还是反编译器失败?这怎么可能?用过的 dex2jarJava Decompiler

这是反编译的方法

public void onSensorChanged(SensorEvent paramSensorEvent) {
    float[] arrayOfFloat = paramSensorEvent.values;
    switch (paramSensorEvent.sensor.getType())
    {
    }
    do
    {
        return;
    } while (this.aDegree == arrayOfFloat[0]);
    this.aDegree = arrayOfFloat[0];
    invalidate();
}

最佳答案

这是可能的,因为无法访问的语句是一个有用的编译时错误,而不是运行时检查/约束。

您反编译的代码最初可能有这样的内容:

boolean debug = true;
do {
    if(debug) {
        return;
    }
}while (this.aDegree == arrayOfFloat[0]);

编译器足够聪明,知道debug始终为真,并且不会费心检查字节码(为了提高效率)。

显然我的例子是很做作的,实际上它可能更复杂(尽管最终结果是相同的)。

关于java - 反编译器输出中的 Unreachable 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26593845/

相关文章:

java - json-simple 的 ParseException NoClassDefFoundExcpetion

android - 在TabLayout( Material 设计)android中动态添加和删除标签

android - 创建文本文件 Android IO

security - Golang 二进制文件如何以及为何显示有关错误的文件和行信息

Android小问题

java - 如何在 FernFlower 中使用自定义重命名器?

java - 如何设计可以选择作为单例运行的 Java 类?

java - 为什么 Gson 期望开始数组却得到一个对象呢?

Java OpenCV FileStorage 和 Mat.push_back

android - 如何更改选定选项卡的颜色