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

如何反向工程/反编译使用ProGuard模糊处理的Android APK?,android,apk,reverse-engineering,proguard,decompiling,Android,Apk,Reverse Engineering,Proguard,Decompiling,不幸的是,我丢失了我的一个应用程序的源代码,我使用ProGuard对其进行了模糊处理。 我还有由ProGuard生成的.apk文件和一些配置文件: dump.txt mapping.txt seeds.txt usage.txt 到目前为止我做了什么? 使用解码的资源文件。 耶,我把那些拿回来了 提取.apk文件,并使用将classes.dex文件转换为.jar文件 如果我现在使用查看源代码(.jar文件),我会看到我的模糊代码。大概是这样的: class c { TextView a;

不幸的是,我丢失了我的一个应用程序的源代码,我使用ProGuard对其进行了模糊处理。
我还有由ProGuard生成的
.apk
文件和一些配置文件:

  • dump.txt
  • mapping.txt
  • seeds.txt
  • usage.txt
  • 到目前为止我做了什么?

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

  • 提取
    .apk
    文件,并使用将
    classes.dex
    文件转换为
    .jar
    文件

  • 如果我现在使用查看源代码(.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文件将模糊代码重新映射到我的原始源代码?我想查看我自己的变量名/方法签名。

    或者这些文件只能用于跟踪崩溃报告堆栈跟踪吗?

    您要查找的所有内容都在mapping.txt文件中,但我从未见过一个工具可以将其全部反转。Proguard执行的一些混淆不仅仅是简单的方法和变量重命名,所以很有可能您无法执行您试图执行的操作。Proguard下载附带的retrace.jar可能会让您走得更远,但我非常确定您必须将其用于stacktrace文件