无法从解压缩器输出中访问语句



我反编译了一个APK文件,然后试图编译它,但收到了一个"Unreachable statement"编译器错误,我想知道这是模糊处理技巧,还是反编译器失败?这怎么可能?习惯于dex2jar和Java解压缩程序

这是反编译的方法

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();
}
这是可能的,因为unreachable statement是一个有用的编译时错误,而不是运行时检查/约束。

你反编译的代码最初可能有这样的东西:

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

编译器足够聪明,知道debug总是真的,并且不需要检查字节码(为了效率)。

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

最新更新