我使用dex2jar从apk获取jar并使用JD-GUI对其进行查看。

但是我注意到有一些标签符号,例如

      if (this.data.length != 7)
              break label279;

    // more code here
     label279: short[] aos = { 0, 0 };


它是由编译器(或混淆)添加的吗?还有其他工具可以用来避免这些标签吗?



如果发现这个
https://code.google.com/p/dex2jar/source/browse/dex-ir/src/main/java/com/googlecode/dex2jar/ir/ts/CleanLabel.java?r=e8b872fdfce8a5a39aa7df083c46ec724fa8d3f4

这与清洁有关吗?

最佳答案

进一步的研究:

if (Math.abs(k) > this.mMaxRotationAngle)
  if (k >= 0)
    break label100;
label100: for (k = -this.mMaxRotationAngle; ; k = this.mMaxRotationAngle)
{
  transformImageBitmap((ImageView)paramView, paramTransformation, k);
  break;
}


通过上面的自然观察代码,我将代码更改为:

if (Math.abs(k) > this.mMaxRotationAngle)

// label100:
for (k = -this.mMaxRotationAngle; ; k = this.mMaxRotationAngle)
{
  if (k >= 0)
    break;// label100;
  transformImageBitmap((ImageView)paramView, paramTransformation, k);
 // break;
}


仍然label100仍然是一个谜...想知道dex2jar在不了解代码的情况下如何处理情况。

:运算符的存在还表明可能存在for each循环

如果将来某个时候这个谜团解决了,请也通知我。

谢谢。

10-08 17:26