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

问题描述 投票:0回答:3

我从崩溃报告系统获得了堆栈跟踪,它被混淆了,就像

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

我有一个映射文件。

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

android proguard obfuscation deobfuscation
3个回答
40
投票

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

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

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

执行此操作后,查看反混淆的崩溃堆栈跟踪:

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

您可以查看此链接了解更多详情。

对一段堆栈跟踪进行反混淆

要自行转换代码,请使用 retrace 脚本(Windows 上为 retrace.bat;Mac/Linux 上为 retrace.sh)。它位于

~/Android/sdk/tools/proguard/bin/
目录中。该脚本采用mapping.txt 文件和堆栈跟踪,生成一个新的、可读的堆栈跟踪。使用 retrace 工具的语法是:

retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]

12
投票

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

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

<project-path>app/build/outputs/mapping/flavor/release/mapping.txt

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

<your-computer-name>/AppData/Local/Android/SDK/tools/proguard/lib

然后你会得到

proguardgui.jar

在 Mac 上:

/Users/<your computer name>/Library/Android/sdk/tools/proguard/lib

通过使用终端

java -jar /Users/<your computer name>/Library/Android/sdk/tools/proguard/lib/proguardgui.jar

proguardgui tool

现在单击左侧菜单侧的“回溯”选项以获取以下窗口,从上述位置浏览您的

mapping.txt
文件,并在模糊的堆栈跟踪窗口中添加堆栈跟踪错误日志,然后单击
ReTrace
按钮获取去混淆的错误报告。

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

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


1
投票

另一种选择(对我有用)。
位置:C:\Program Files\Android\Android Studio\jre 中(java.exe 在这里)

  1. 添加Sdk ools\proguard\lib中的文件:

    proguard.jar

    retrace.jar

  2. 添加您的mapping.txt 和堆栈跟踪文件

  3. 创建一个包含以下行的bat文件:

    java -jar retrace.jar -verbose 映射.txt 堆栈跟踪

    暂停

  4. 运行它。

© www.soinside.com 2019 - 2024. All rights reserved.