Android:如何从堆栈中还原ProGuard混淆后的代码_?Briella的博客-程序员宅基地

技术标签: java  操作系统  移动开发  

本文翻译自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!

如下图所示(译者注)
androidQQ20160719-0.png

命令行

  • 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
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33738982/article/details/86433865

智能推荐

Android Developers:检测常见的手势_1024工场的博客-程序员宅基地

”触摸手势“发生在用户放置一个或者多个手指在触摸屏上的时候,然后你的应用程序翻译这个触摸模型作为一个特别的手势。手势检测有相应的两个阶段: 采集关于触摸事件的数据。 翻译这个数据去查看它是否符合你的应用程序支持的任何手势的标准。 支持库类 在这个课程中的例子使用了GestureDetectorCompat和MotionEventCom

解决MVC框架调用webservice,报404或500错误_mvc引用webservice接口缺少.disco_qq_15566419的博客-程序员宅基地

最近做项目,遇到个问题就是webservice调用报错,如下刚开始以为是webservice的内容的问题,后面把webservice放.aspx下,就可以正常使用,由此确定应该是MVC路径映射的问题。解决办法:您必须忽略在Global.asax.cs中Web服务的路线 routes.IgnoreRoute("{*allasmx}", new {allasmx=@".*\.

XWPFDocument中XWPFParagraph的使用_qq_43342172的博客-程序员宅基地

背景老师让我们统计一个班的调查问卷每个问卷夹都有这么多Word文档,每个Word文档都有调查问卷的题目,也不知道老师为啥要这么做。然后让我们统计调查问卷的回答情况。每个人回答就用高亮的颜色标识一下。所以我想到用XWPFDocument来帮助我完成统计。话不多说,开干。依赖<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collectio

Revit API: IUpdater 自动更新接口_revit api 自动更新dll_极客BIM工作室的博客-程序员宅基地

前言在做完特定操作之后,追加用户自定义的操作,这是否能通过 Revit API 实现呢?现实中,确实有很多这种需求,比如各种标准的检查。答案是“Yes”,Revit API 提供了这个功能,通过 IUpdater 及其相关。例子代码大部分来自 Revit API 官方文档。在绘制完左边这种墙类型的时候,自动将其转化成右边这种类型。完成这个功能,需要:实现你自己的 Updater...

MongoDB(Roboit3T)中导出集合数据_weixin_34409357的博客-程序员宅基地

C:\MongoDB\bin\mongoexport -d MES-LOCAL -c Employee -o C:\Employee.json //这里导出的是MES-LOCAL数据库下的,Employee文档 一:先从数据库中导出文档(平板中的数据,导出进行统一分析)打开:\Employee目录可以看到“Employee.json”文件二:将“Employee....

随便推点

PyQt5高级界面控件之QTimer(十一)_pyqt界面操作时影响timer性能_王张飞的博客-程序员宅基地

前言如果在应用程序中周期性地进行某项操作,比如周期性的检测主机的cpu值,则需要用到QTimer定时器,QTimer类提供了重复和单次的定时器,要使用定时器,需要先创建一个QTimer实例,将其Timeout信号连接到槽函数,并调用start(),然后,定时器,会以恒定的间隔发出timeout信号 ...

FastReport报表工具与FineReport报表工具的对比_weixin_33774615的博客-程序员宅基地

FastReport报表工具与FineReport报表工具的对比FineReport报表工具中国报表工具领导品牌,经过十多年的发展,其市场占有率为业内第一,用户遍布各行各业,深受用户赞誉。相对fastreport,finereport报表工具无论在实现语言、报表设计和处理、展现的多样性,还是集成应用方面,都有着明显的优势。如果说fastreport是能打电话的手机,那么fin...

中文搜索引擎技术揭密:系统架构(二)_Kangsheng的博客-程序员宅基地

来源:e800.com.cn 搜索引擎技术和分类 搜索引擎的技术基础是全文检索技术,从20世纪60年代,国外对全文检索技术就开始有研究。全文检索通常指文本全文检索,包括信息的存储、组织、表现、查询、存取等各个方面,其核心为文本信息的索引和检索,一般用于企事业单位。随着互联网信息的发展,搜索引擎在全文检索技术上逐渐发展起来,并得到广泛的应用,但搜索引擎还是不同于全文检索。搜索引擎和常规意义上的全文检

队列的顺序存储与链式存储_究极无敌暴龙战神的博客-程序员宅基地

队列:具有一定操作约束的线性表,只能在一端插入,而在另一端删除,先进先出队列的顺序存储实现#define MaxSize<储存数据元素的最大个数>typedef struct QNode *Queue;struct QNode{ ElementType Data[MaxSize]; int rear;//队尾 ,进行插入操作 int front;//队头 ,front 进行删除操作 }; void AddQ(Queue PtrQ,ElementType item){ if(

手游堡垒之夜服务器没响应,堡垒之夜国际服点启动没反应 | 手游网游页游攻略大全..._冯锦源的博客-程序员宅基地

发布时间:2018-01-18堡垒之夜中到底是玩国服还是玩国际服,很多小伙伴可能都不太了解,下面牛游戏小编就为你们带来了堡垒之夜中国服与国际服的对比,想了解的小伙伴就一起来看看吧,希望能对你们有帮助. 玩国服还是玩国际服 国服 ...标签:攻略发布时间:2018-04-03堡垒之夜是一款类似于绝地求生大逃杀的生存类游戏,目前堡垒之夜只开放了单人模式和四人组队模式,那么在游戏中单排怎么玩呢?今天小编...

ap6212linux驱动下载,AP6212各个版本固件_机智团队(风清扬)的博客-程序员宅基地

AP6212各个版本固件AP6212是蓝牙支持BT4.2+WiFi单频+FM的FM蓝牙双频WiFi三合一模块,采用博通BCM43438A0方案,支持Win/Android/Linux操作系统;该无线模块符合IEEE 802.11 b/g/n标准,可达到a级速度72.2Mbps,单流802.11n草案,54Mbps的IEEE规定802.11g,或11Mbps,用于IEEE 802.11b连接到无线局...

推荐文章

热门文章

相关标签