mes*_*mes 0 java android decompiling dex2jar
我反编译了一个APK文件,然后尝试编译它并收到一个"无法访问的语句"编译器错误,我想知道它是一个混淆器技巧,还是反编译失败?这怎么可能?使用 dex2jar 和 Java 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();
}
Run Code Online (Sandbox Code Playgroud)
这是可能的,因为它unreachable statement
是一个有用的编译时错误,而不是运行时检查/约束.
您反编译的代码最初可能有这样的代码:
boolean debug = true;
do {
if(debug) {
return;
}
}while (this.aDegree == arrayOfFloat[0]);
Run Code Online (Sandbox Code Playgroud)
编译器非常聪明,知道它debug
总是正确的,并且不需要检查字节代码(为了提高效率).
显然我的例子非常人为,实际上它可能更复杂(虽然最终结果是相同的).