Android:如何从堆栈中还原ProGuard混淆后的代码
本文翻译自Android: How To Decode ProGuard’s Obfuscated Code From Stack Trace
本篇文章是写给那些在他们的应用中使用ProGuard并且需要从堆栈信息中进行调试的Android开发者。这是一种非常简单就将混淆的错误信息转化为可读的方法。
还原前
以下是ProGuard混淆过的堆栈信息:
Caused by: java.lang.NullPointerException
at net.simplyadvanced.ltediscovery.be.u(Unknown Source)
at net.simplyadvanced.ltediscovery.at.v(Unknown Source)
at net.simplyadvanced.ltediscovery.at.d(Unknown Source)
at net.simplyadvanced.ltediscovery.av.onReceive(Unknown Source)
还原后
只要在命令行写一行命令,混淆都将会被移除,如下所示:
Caused by: java.lang.NullPointerException
at net.simplyadvanced.ltediscovery.UtilTelephony.boolean is800MhzNetwork()(Unknown Source)
at net.simplyadvanced.ltediscovery.ServiceDetectLte.void checkAndAlertUserIf800MhzConnected()(Unknown Source)
at net.simplyadvanced.ltediscovery.ServiceDetectLte.void startLocalBroadcastReceiver()(Unknown Source)
at net.simplyadvanced.ltediscovery.ServiceDetectLte$2.void onReceive(android.content.Context,android.content.Intent)(Unknown Source)
如何还原堆栈信息
可以选择命令行或者GUI
GUI
- 1.打开
/tools/proguard/bin/proguardgui.bat - 2.选择左边栏的
ReTrace选项 - 3.添加你的mapping文件和混淆过的堆栈信息
- 4.点击
ReTrace!
如下图所示(译者注)

命令行
- 1.需要你的ProGuard的mapping文件和你想要还原的堆栈信息(如stacktrace.txt)
- 2.最简单的方法就是将这些文件拷贝到
/tools/proguard/bin/目录 - 3.运行以下命令
//Windows
retrace.bat -verbose mapping.txt stacktrace.txt > out.txt
//Mac/Linux
retrace.sh -verbose mapping.txt stacktrace.txt > out.txt
Android:如何从堆栈中还原ProGuard混淆后的代码的更多相关文章
- Android 混淆后的代码调试
ProGuard的输出文件及用处 混淆之后,会给我们输出一些文件,在gradle方式下是在<project_dir>/build/proguard/目录下,ant是在<project ...
- apk反编译(6)用ProGuard 混淆、压缩代码,压缩资源。
1.android官方文档 https://developer.android.com/studio/build/shrink-code 主要内容如下: 1.1 压缩代码 混淆生成的文件:<m ...
- 使用proguard混淆android代码
当前是有些工具比方apktool,dextojar等是能够对我们android安装包进行反编译,获得源代码的.为了降低被别人破解,导致源代码泄露,程序被别人盗代替码,等等.我们须要对代码进行混淆,an ...
- Android Proguard混淆对抗之我见
关于何为Proguard,可以参考GuardSquare官网其优化业务及Wikipedia相关条目. Proguard:https://www.guardsquare.com/proguard Wik ...
- Android之ProGuard混淆器
ProGuard是一个压缩.优化和混淆Java字节码文件的免费的工具,它可以删除无用的类.字段.方法和属性.可以删除没用的注释,最大限度地优化字节码文件.它还可以使用简短的无意义的名称来重命名已经存在 ...
- Android studio3.1.3 打包jar,混淆
最近公司需要将数据进行打包提供给用户,需要我们提供数据解析的jar给用户,为了防止数据格式的泄露,需要进行混淆.这里记录一下封装jar并混淆的过程. 1.创建module 之后创建了几个需要演示混淆的 ...
- ASP.NET Core搭建多层网站架构【15-扩展之使用Obfuscar混淆加密保护代码】
2020/02/03, ASP.NET Core 3.1, VS2019, Obfuscar 2.2.25 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[15-扩展之使 ...
- 利用android proguard混淆代码
利用android proguard混淆代码 2014-02-05 17:50 1207人阅读 评论(1) 收藏 举报 网上虽然有很多相关博客,不过貌似都不是最新版的..于是百度+谷歌+github上 ...
- Android中使用proguardgui混淆jar包
本文章的前提条件是,读者已经掌握了正确导出jar包的技能. 1.拷贝Android项目中"proguard.cfg"文件到你指定的位置,并改名为"proguard.pro ...
随机推荐
- 插件~使用ECharts动态在地图上标识点~动态添加和删除标识点
之前写过一个Echarts的文章,没有基础的同学可以先看这<上一篇>,对于一个地图和说,我们在初始化之后,你可能被在地图上标识出一些点,当然这根据你的业务去标识,而如果每次更新数据都加载全 ...
- js使用转义符技巧输出HTML
有时候我们需要使用js输出html代码,会涉及一些标签.变量. 对于很长的html代码,为了让js具有较好的可读性,需要在js里对html代码进行一定的拆分.拼接. 简单明了版 通常我们这样做 var ...
- JAVA学习Swing章节标签JLabel中图标的使用
package com.swing; import java.awt.Color; import java.awt.Component; import java.awt.Container; impo ...
- 解决pageControl页面设置无效问题
废话不多说,先上代码 1.添加pageViewControl - (void)addPageControl { UIPageControl *pageControl = [[UIPageControl ...
- 移动页面HTML5自适应手机屏幕宽度
标签: 网上关于这方面的文章有很多,重复的东西本文不再赘述,仅提供思路,并解释一些其他文章讲述模糊的地方. 1.使用meta标签,这也是普遍使用的方法,理论上讲使用这个标签是可以适应所有尺寸的屏幕的, ...
- 【转】我应该直接学Swift还是Objective-C?
(本文作者Amit Bijlani,由CocoaChina翻译) 当我们发布了Swift语言学习课程之后,收到了很多邮件和私信来问自己是否还需要学习C或者Objective-C.此外,人们似乎还在迷惑 ...
- Android composite adb interface
我的平板连上电脑后,在eclipse的DDMS中查看不到.很奇怪以前不会,我以为在进程中有其他的adb.exe冲突.查看任务管理器没有看到其他adb.exe进程.然后重启eclipse也不用,重启电脑 ...
- 【BootStrap】初步教程
<span style="font-family: Arial, Helvetica, sans-serif;">最近刚刚接触到BootStrap,在这里总结一下Boo ...
- 解决genemotion模拟器冲突导致的Android Studio无法启动ADB的问题
首先命令行下运行 adb nodaemon server ./adb nodaemon server (Mac OSX) 如果出现错误: error: could not install *smart ...
- Codeforces Round #384 (Div. 2) A. Vladik and flights 水题
A. Vladik and flights 题目链接 http://codeforces.com/contest/743/problem/A 题面 Vladik is a competitive pr ...