首页 > Android > 笔记 > 正文

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

2016-09-23 笔记 469 ℃ 0 评论

一、寻找 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


猜你喜欢

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

请填写验证码
日历
«   2018年10月   »
1234567
891011121314
15161718192021
22232425262728
293031
网站分类
最近发表
标签列表
站点信息
  • 文章总数:153
  • 页面总数:1
  • 分类总数:11
  • 标签总数:171
  • 评论总数:4
  • 浏览总数:94719