2

我使用 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

这与清洁有关吗?

4

1 回答 1

0

进一步的研究:

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循环

如果在将来的某个时候这个谜团得到解决,那么也请通知我。

谢谢。

于 2013-11-16T22:33:34.520 回答