首页 文章

如何对使用ProGuard进行模糊处理的Android APK进行反向工程/反编译?

提问于
浏览
15

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

  • dump.txt

  • mapping.txt

  • seeds.txt

  • usage.txt

What have I done so far?

  • 使用apktool解码资源文件 .
    是的,我已经回来了!

  • 提取 .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文件将混淆的代码重新映射到我的原始源代码?我想看看我自己的变量名称/方法签名 .
或者这些文件只能用于跟踪崩溃报告堆栈跟踪?

1 回答

  • 3

    你正在寻找的一切都在mapping.txt文件中,但我从来没有见过一个可以逆转它的工具 . Proguard执行的一些混淆不仅仅是方法和变量的简单重命名,因此您很可能无法完成您想要做的事情 . Proguard下载附带的retrace.jar可能会让你更进一步,但我很确定你必须使用stacktrace文件 .

相关问题