如何使用映射文件对 Android 堆栈跟踪进行去混淆处理
How to deobfuscate an Android stacktrace using mapping file
我从崩溃报告系统得到了一个堆栈跟踪,它被混淆了,就像
... Failed resolution of: Lru/test/c/b/a; ...
我有一个映射文件。
如何使用 mapping.txt 反混淆此堆栈跟踪?
从您的应用页面获取去混淆的崩溃堆栈跟踪
按照以下步骤将您的 mapping.txt 上传到您的应用程序 PlayStore 页面:
- 登录您的 Play 管理中心。
- Select 一个应用程序。
- 在左侧菜单中,单击 Android vitals > 反混淆文件。
- 点击应用版本旁边的上传。
- 为您的应用程序版本上传 ProGuard 映射文件。
执行此操作后,查看去混淆后的崩溃堆栈跟踪:
- 登录您的 Play 管理中心。
- Select 一个应用程序。
- 在左侧菜单中,点击 Android Vitals > ANRs & Crashes。
- Select 崩溃。
- 在“堆栈跟踪”选项卡上,您会看到经过去混淆处理的堆栈跟踪。
您可以查看 this link 了解更多详情。
反混淆一段堆栈跟踪
要自己转换代码,请使用回溯脚本(retrace.bat on Windows;retrace.sh on Mac/Linux)。它位于 ~/Android/sdk/tools/proguard/bin/
目录中。该脚本采用 mapping.txt 文件和您的堆栈跟踪,生成一个新的、可读的堆栈跟踪。使用回溯工具的语法是:
retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]
我们可以使用pro-guard工具回溯:
1st 从以下位置获取映射文件
<project-path>app/build/outputs/mapping/flavor/release/mapping.txt
Find the pro-guard tool i.e. "proguardgui" from the below location
<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
现在单击左侧菜单侧的回溯选项以获取以下内容 window,从上述位置浏览您的 mapping.txt
文件,并将您的堆栈跟踪错误日志添加到混淆的堆栈跟踪中window 然后单击 ReTrace
按钮以获取去混淆错误报告。
There is one more way of doing automatically using Google play store
console.
Check this website of Google Play Store Console for detailed
steps.
另一种选择(适合我)。
位置:C:\ProgramFiles\Android\AndroidStudio\jre\bin(java.exe在这里)
添加来自 Sdk\tools\proguard\lib 的文件:
proguard.jar
retrace.jar
添加您的 mapping.txt 和堆栈跟踪文件
使用以下行创建一个 bat 文件:
java -jar retrace.jar -verbose mapping.txt stacktrace
暂停
运行吧。
我从崩溃报告系统得到了一个堆栈跟踪,它被混淆了,就像
... Failed resolution of: Lru/test/c/b/a; ...
我有一个映射文件。
如何使用 mapping.txt 反混淆此堆栈跟踪?
从您的应用页面获取去混淆的崩溃堆栈跟踪
按照以下步骤将您的 mapping.txt 上传到您的应用程序 PlayStore 页面:
- 登录您的 Play 管理中心。
- Select 一个应用程序。
- 在左侧菜单中,单击 Android vitals > 反混淆文件。
- 点击应用版本旁边的上传。
- 为您的应用程序版本上传 ProGuard 映射文件。
执行此操作后,查看去混淆后的崩溃堆栈跟踪:
- 登录您的 Play 管理中心。
- Select 一个应用程序。
- 在左侧菜单中,点击 Android Vitals > ANRs & Crashes。
- Select 崩溃。
- 在“堆栈跟踪”选项卡上,您会看到经过去混淆处理的堆栈跟踪。
您可以查看 this link 了解更多详情。
反混淆一段堆栈跟踪
要自己转换代码,请使用回溯脚本(retrace.bat on Windows;retrace.sh on Mac/Linux)。它位于 ~/Android/sdk/tools/proguard/bin/
目录中。该脚本采用 mapping.txt 文件和您的堆栈跟踪,生成一个新的、可读的堆栈跟踪。使用回溯工具的语法是:
retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]
我们可以使用pro-guard工具回溯:
1st 从以下位置获取映射文件
<project-path>app/build/outputs/mapping/flavor/release/mapping.txt
Find the pro-guard tool i.e. "proguardgui" from the below location
<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
现在单击左侧菜单侧的回溯选项以获取以下内容 window,从上述位置浏览您的 mapping.txt
文件,并将您的堆栈跟踪错误日志添加到混淆的堆栈跟踪中window 然后单击 ReTrace
按钮以获取去混淆错误报告。
There is one more way of doing automatically using Google play store console.
Check this website of Google Play Store Console for detailed steps.
另一种选择(适合我)。
位置:C:\ProgramFiles\Android\AndroidStudio\jre\bin(java.exe在这里)
添加来自 Sdk\tools\proguard\lib 的文件:
proguard.jar
retrace.jar
添加您的 mapping.txt 和堆栈跟踪文件
使用以下行创建一个 bat 文件:
java -jar retrace.jar -verbose mapping.txt stacktrace
暂停
运行吧。