15

不幸的是,我丢失了我使用 ProGuard 混淆的一个应用程序的源代码。
我仍然有.apkProGuard 生成的文件和一些配置文件:

  1. dump.txt
  2. mapping.txt
  3. seeds.txt
  4. usage.txt

到目前为止我做了什么?

  1. 使用apktool解码的资源文件。
    耶,我把那些拿回来了!

  2. 提取.apk文件并使用dex2jarclasses.dex将文件转换为文件。.jar

如果我现在使用JD-Gui查看源代码(.jar 文件),我会看到我的混淆代码。像这样的东西:

class c {
  TextView a;
  TextView b;
  TextView c;
  TextView d;
  CheckBox e;
}

protected List a(Uri[] paramArrayOfUri) { ... }

protected void a(List paramList) { ... }

还有一些循环看起来有点奇怪。我不写无限循环:

while (true) {
     if (!localIterator.hasNext())
        return localArrayList;
     ProviderInfo[] arrayOfProviderInfo = ((PackageInfo)localIterator.next()).providers;
     if (arrayOfProviderInfo == null)
        continue;
     int i = arrayOfProviderInfo.length;
}

是否可以使用 ProGuard 的任何 .txt 文件将混淆代码重新映射到我的原始源代码?我想看看我自己的变量名/方法签名。
或者这些文件是否只能用于跟踪崩溃报告堆栈跟踪?

4

1 回答 1

3

您要查找的所有内容都在 mapping.txt 文件中,但我从未见过可以逆转这一切的工具。Proguard 执行的一些混淆不仅仅是简单地重命名方法和变量,因此您很可能无法做您想做的事情。Proguard 下载附带的 retrace.jar 可能会让您走得更远,但我很确定您必须将它与堆栈跟踪文件一起使用。

于 2013-03-08T23:11:36.853 回答