Android ProGuard 还原堆栈
使用Android SDK还原
位置: <android sdk>/tools/proguard/bin
- proguardgui.sh GUI工具
- retrace.sh 命令行工具
retrace.sh -verbose mapping.txt stacktrace.txt > ./output.txt
其中-verbose
代表显示返回类型以及参数类型(一般用不上)
如果你发现还原后,行号还是显示的Unknow source
,无法显示行号。那么你需要在混淆文件中加入:
-keepattributes SourceFile,LineNumberTable
代表着保留源文件名及行号。
官网下载jar文件还原
ProGuard官网
下载之后,解压zip包,在<proguardx.x.x>/lib/
下,有两个jar文件retrace.jar
,proguard.jar
,使用如下命令还原
java -jar retrace.jar -verbose mapping.txt stacktrace.txt > ./output.txt
这里的-verbose
含义和上面的一致。
自己写代码还原
当然,通过上面的方式下载下的zip包里除了有jar工具包,还有ProGuard的源码,你可以使用<proguardx.x.x>/retrace/src
下的源码来自己使用java源码实现还原。
package com.immomo.rifle;
import java.io.File;import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;import proguard.retrace.ReTrace;public class RetraceUtil {private String stackFile;private String mapFile;private String outFile;private boolean append;public RetraceUtil(String map, String proF, String out, boolean append) {this.mapFile = map;this.stackFile = proF;this.outFile = out;this.append = append;myReTrace();}public void myReTrace() {try {File file = new File(this.outFile);//是否增量写入FileOutputStream fis = new FileOutputStream(file, this.append);PrintStream out = new PrintStream(fis);
// sysout的print内容输出到文件System.setOut(out);ReTrace localReTrace = new ReTrace(ReTrace.STACK_TRACE_EXPRESSION, true, new File(this.mapFile), new File(this.stackFile));localReTrace.execute();out.close();fis.close();System.out.println("Retrace Done!");} catch (IOException e) {// TODO Auto-generated catch blockSystem.err.println("Retrace Erro:");System.err.println(e.getMessage());}}
}
参考:
使用Retrace还原被ProGuard混淆后的崩溃堆栈
Android ProGuard 还原堆栈相关推荐
- Android:如何从堆栈中还原ProGuard混淆后的代码
本文翻译自Android: How To Decode ProGuard's Obfuscated Code From Stack Trace 本篇文章是写给那些在他们的应用中使用ProGuard并且 ...
- Android Proguard / ZKM 点滴记录
简介 Java代码是非常容易反编译的.为了很好的保护Java源代码,我们往往会对编译好的class文件进行混淆处理. ProGuard是一个混淆代码的开源项目.它的主要作用就是混淆,当然它还能对字节码 ...
- [转载]关于Android ProGuard混淆学习记录
转自:http://www.cnitblog.com/zouzheng/archive/2011/01/12/72630.aspx 前段时间把Android的工程用Ant Build搞定后,现在需要把 ...
- Android Proguard 不混淆所有第三方jar(忽略配置设置)
今天给大家分享一个只混淆自己的项目代码而不混淆所有第三方jar的方法(没错,是所有的第三方都不进行混淆,无论来什么第三方,都不需要动混淆配置) 不混淆所有第三方重大突破 今天又被同事逼迫看了一下Pro ...
- Android - ProGuard简介
Android - ProGuard简介 本文地址: http://blog.csdn.net/caroline_wendy 本文的合集已经编著成书,<高级Android开发强化实战>,欢 ...
- Android Proguard工具使用和配置详解
Android开发中的Proguard Proguard是Android开发时经常会用到的一个工具,在Android SDK中已经集成了一个免费的Proguard版本,位于<sdk>/to ...
- Android ProGuard使用要点
1.基本的的使用可以很容易百度到, 但是当你使用了android-support-v4或者android-support-v7或者android-support-v11包之后,你发现导出的时候, 警告 ...
- android proguard 第三方jar,Android Studio代码混淆-第三方jar混淆汇总(持续更新)
前言 Android有非常多的优秀的第三方开源jar包,我们经常在我们的项目中使用了不少jar包,但是往往到了release的时候就忘了混淆第三方jar包了,会给我们开发带来不少麻烦,所有在这里汇总一 ...
- Android ProGuard使用要点!
为什么80%的码农都做不了架构师?>>> 1.基本的的使用可以很容易百度到, 但是当你使用了android-support-v4或者android-support-v7或者an ...
- android+proguard目录,Android Proguard 详解
一般的商业项目都需要对代码进行加密,Android提供了一种代码混淆方法,介绍如下: 一.简介 1.简介 混淆器通过删除从未用过的代码和使用晦涩名字重命名类.字段和方法,对代码进行压缩,优化和混淆.结 ...
最新文章
- MYSQL编译参数详解
- 扩增子统计绘图3热图:样品相关分析,差异OTU
- 正则表达式抓取文件内容中的http链接地址
- UML类图详解_泛化关系
- amd一点也不yes_最不值得买的高端显卡!RTX3080从真香变成了鸡肋?
- QlikSense移动端使用攻略
- (*长期更新)软考网络工程师学习笔记——Section 6 网络层上篇
- junit测试类叫什么名字_使用Junit测试名称
- opencv python教程简书_OpenCV-Python系列二:常用的图像属性
- 面试题,作为产品经理你是如何应对需求变更的?
- vue 检测ie版本_Vue2+Webpack+ES6 兼容低版本浏览器(IE9)解决方案
- spring session的生命周期
- MySQL客户端连接被频繁杀掉,企业案例(一):由于mysql sleep线程过多小故障
- Azure Data Science Virtual Machine Linux的初步体验
- 2021-2025年中国打印管理软件行业市场供需与战略研究报告
- IntelliJ IDEA使用技巧(二)——添加jar包
- UML14种图之部署图和构件图最全总结
- SGVision与三菱FX5UPLC通讯
- python根据日期生成动态密码
- AfterNodeInsertion方法
热门文章
- 《Web漏洞防护》读书笔记——第7章,访问控制防护
- 庖丁解牛之spring源码系列二 spring bean生命周期介绍
- android接收红外传感器发送的脉冲信号,怎么判断红外发送和接收管?
- Unity3D笔记 英保通三 脚本编写 、物体间通信
- bzoj1565: [NOI2009]植物大战僵尸
- 如何将jar包加入到Maven本地仓库
- SpringMVC前后台数据传递中Json格式的相互转换(前台显示格式、Json-lib日期处理)及Spring中的WebDataBinder浅析...
- linux如何删除密钥链接,如何在不创建新密钥的情况下删除SSH密钥的密码短语?...
- 关于MyBatis一级缓存、二级缓存那些事
- 计算机网络的简单概述以及在浏览器中输入一个网址后如何执行