当前位置:首页 > Android > 笔记 > 正文内容

Android混淆异常处理还原混淆代码

jsc9年前 (2016-09-23)笔记4686

一、寻找 mapping.txt文件

    Google一番后发现了 mapping.txt这个东东。要想知道mapping.txt在哪,就先要弄清楚它是怎么来的。我们每次build,ProGuard就会输出下面几个文件:

  • dump.txt
    介绍了APK中所有的class文件的内部结构。

  • mapping.txt
    提供原文件对应混淆后的类、方法和字段名称。

  • seeds.txt
    列出没有混淆的类和成员。

  • usage.txt
    列出从apk中删除的代码。

    既然是 build后输出的,那么位置也很清楚了:<module-name>/build/outputs/mapping/release/

    有了 mapping.txt,也知道这个文件就是源代码与混淆后的类,方法和属性名字之间的映射。那怎么能看到源代码呢?

二、还原混淆后的代码

    首先要注意的一点是:每次混淆打包后,都会覆盖之前的 mapping.txt,所以最好每次发版都保存下当前的mapping.txt,并做好标注区分出版本,以便以后使用。

    ProGuard 提供了命令行和 GUI 工具来还原混淆后的代码。


    1.命令行

    通过retrace工具(windows版本是retrace.bat,Mac/Linux上是retrace.sh),它的位置在<sdk-root>/tools/proguard/。把需要还原的堆信息保存在obfuscated_trace文件中

    你可以再终端下输入:

                                    retrace.bat -verbose mapping.txt obfuscated_trace.txt


    2.GUI 工具

    如果不用终端也可以,在 <sdk-root>/tools/proguard/bin下,有个proguardgui.batGUI工具

    1. 运行 proguardgui.bat

    2. 从左边的菜单选择“ReTrace”

    3. 在上面的Mapping file中选择你的mapping文件,在下面输入框输入要还原的代码。

    4. 点击右下方的“ReTrace!”

    如果还有疑问可以查看 Shrink Your Code and Resources


扫描二维码推送至手机访问。

版权声明:本文由微小站发布,如需转载请注明出处。

本文链接:https://jsc0.com/post/132.html

标签: 混淆还原
分享给朋友:
返回列表

没有更早的文章了...

下一篇:Android如何查看应用签名信息

“Android混淆异常处理还原混淆代码” 的相关文章

Android如何查看应用签名信息

Android如何查看应用签名信息

http://www.trinea.cn/android/android-view-signatures/介绍Android如何查看自己的应用签名及三方APK或系统APK签名信息,包含其中的MD5、SHA1、SHA256值和签名算法等信息。1、查看自己的应用签名   &...

Android 对应keycode(一)

各个输入法对蓝牙键盘兼容情况设备默认输入法必应输入法谷歌输入法百度输入法讯飞输入法QQ输入法搜狗输入法百度输入法小米版小米6输入字符缺失错误软键盘弹不出正常正常正常软键盘弹不出需要alt+shift输入字符缺失软键盘弹不出输入字符缺失错误正常魅族e1正常正常正常正常(专版)软键盘弹不出需要alt+s...

Android-ABIFilter-Device supports x86,but APK only supports armeabi-v7a,armeabi,x86_64

Android-ABIFilter-Device supports x86,but APK only supports armeabi-v7a,armeabi,x86_64

我遇到一个小问题Android 的 so 库和 ABI 配置我原先也是没有什么概念的,直到上个周,在我尝试跑一个程序的时候,真机运行没问题,但是用伟大的模拟机的时候,遇到了这么一个错误:模拟机的下面显示:Device supports x86,but APK only supports armeab...

安卓调用系统自带分享功能分享文字,分享大图片,仿好奇心日报分享长图片(不用申请微信微博官方sdk就能直接分享)

当前安卓分享一共三种方式1,调用安卓系统自带分享功能(可以分享大图)2,调用微信,微博支付宝等自己的官方分享sdk3,用友盟,shareSdk等集成好的sdk由于公司业务要求,需要分享一些长图,大图到微信,微博等。由于微信微博自己的官方sdk对图片有限制,比如微博要求缩略图不能大于32k,原图不能大...

Android 开源之StickyHeaderListView 标题渐变、吸附悬停、筛选分类、动态头部

Android 开源之StickyHeaderListView 标题渐变、吸附悬停、筛选分类、动态头部

StickyHeaderListView 是基于实际需求做出的灵活可定制的UI功能,具体实现功能如下:一、支持无限循环的广告位。二、高度可动态配置的Header2和Header3(使用GridView实现)。三、主要功能:分类、排序和筛选布局滑动到顶部后吸附、悬停。四、自定义FilterView筛选...