【问题标题】:How to deobfuscate an Android stacktrace using mapping file如何使用映射文件对 Android 堆栈跟踪进行去混淆处理
【发布时间】:2019-09-24 04:36:06
【问题描述】:

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

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

我有一个映射文件。

如何使用 mapping.txt 去混淆这个堆栈跟踪?

【问题讨论】:

    标签: android proguard obfuscation deobfuscation


    【解决方案1】:

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

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

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

    这样做后,查看去混淆的崩溃堆栈跟踪:

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

    您可以查看this link了解更多详情。

    去混淆一段堆栈跟踪

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

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

    【讨论】:

    • 回溯脚本似乎已从 SDK 中删除,或者不再位于路径中。你的命令对我不起作用。它可以在以下位置找到:~/Library/Android/sdk/tools/proguard/bin/retrace.sh
    • 我已经更新了我的答案@Janusz。实际上&lt;sdk-root&gt; 已经存在,但由于我没有用'`'注释它,它没有显示,我现在才注意到它。我这边有点晚了,但感谢您的提醒
    • @Ricard 如何在 windows 中找到我的 proguard 文件路径
    • 错误运行'retrace.bat -verbose mapping.txt obfuscated_trace.txt':无法运行程序“retrace.bat”(在目录“C:\Users\Edgar\AndroidStudioProjects\Swapit_Android\app”) : CreateProcess error=2, 系统找不到指定的文件
    • 我使用 retrace.sh [-verbose] mapping.txt [] 工作并且非常有用,因为应用中心不会在上传映射文件之前回溯问题。谢谢队友
    【解决方案2】:

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

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

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

    从以下位置找到 pro-guard 工具,即“proguardgui”

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

    然后你会得到proguardgui.jar

    在 mac 上:/Users/&lt;your computer name&gt;/Library/Android/sdk/tools/proguard/lib

    使用终端

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

    proguardgui tool

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

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

    Check this website of Google Play Store Console for detailed steps.

    【讨论】:

      【解决方案3】:

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

      1. 从 Sdk\tools\proguard\lib 添加文件:

        proguard.jar

        retrace.jar

      2. 添加您的 mapping.txt 和 stacktrace 文件

      3. 使用以下行创建一个 bat 文件:

        java -jar retrace.jar -verbose mapping.txt 堆栈跟踪

        暂停

      4. 运行它。

      【讨论】:

        猜你喜欢
        • 2021-07-30
        • 2019-11-19
        • 1970-01-01
        • 2022-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多