如何使用映射文件对 Android 堆栈跟踪进行反混淆处理

Mak*_*aev 18 obfuscation android proguard deobfuscation

我从崩溃报告系统得到了一个堆栈跟踪,它被混淆了,比如

... 解析失败:Lru/test/c/b/a;...

我有一个映射文件。

如何使用 mapping.txt 对该堆栈跟踪进行反混淆?

Ric*_*rdo 27

从您的应用页面获取反混淆的崩溃堆栈跟踪

按照以下步骤将您的 mapping.txt 上传到您的应用 PlayStore 页面:

  1. 登录您的 Play 管理中心。
  2. 选择一个应用程序。
  3. 在左侧菜单中,单击 Android Vitals > 反混淆文件。
  4. 在您的应用版本旁边,点击上传。
  5. 为您的应用程序版本上传 ProGuard 映射文件。

这样做之后,要查看您的反混淆崩溃堆栈跟踪:

  1. 登录您的 Play 管理中心。
  2. 选择一个应用程序。
  3. 在左侧菜单中,点击 Android Vitals > ANR 和崩溃。
  4. 选择崩溃。
  5. 在“堆栈跟踪”选项卡上,您将看到经过反混淆处理的堆栈跟踪。

您可以查看此链接以获取更多详细信息。

去混淆一段堆栈跟踪

要自己转换代码,请使用回溯脚本(Windows 上为 retrace.bat;Mac/Linux 上为 retrace.sh)。它位于~/Android/sdk/tools/proguard/bin/目录中。该脚本采用 mapping.txt 文件和您的堆栈跟踪,生成一个新的、可读的堆栈跟踪。使用回溯工具的语法是:

retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]
Run Code Online (Sandbox Code Playgroud)

  • retrace 脚本似乎已从 SDK 中删除,或者不再位于路径中。你的命令对我不起作用。它可以在:~/Library/Android/sdk/tools/proguard/bin/retrace.sh 中找到 (5认同)

Aru*_*dra 16

我们可以使用pro-guard工具来回溯:

1首先从以下位置获取映射文件

<project-path>app/build/outputs/mapping/flavor/release/mapping.txt
Run Code Online (Sandbox Code Playgroud)

从以下位置找到 proguard 工具,即“proguardgui”

<your-computer-name>/AppData/Local/Android/SDK/tools/proguard/lib
Run Code Online (Sandbox Code Playgroud)

那么你会得到proguardgui.jar

在苹果电脑上:/Users/<your computer name>/Library/Android/sdk/tools/proguard/lib

通过使用终端

java -jar /Users/<your computer name>/Library/Android/sdk/tools/proguard/lib/proguardgui.jar
Run Code Online (Sandbox Code Playgroud)

proguardgui工具

现在,单击左侧菜单侧的“回溯”选项以获取以下窗口,mapping.txt从上述位置浏览文件并在混淆的堆栈跟踪窗口中添加堆栈跟踪错误日志,然后单击按钮ReTrace以获取去混淆的错误报告。

还有另一种使用 Google Play 商店控制台自动执行的方法。

请查看 Google Play Store Console 网站了解详细步骤。