android混淆之从异常堆栈中还原ProGuard混淆过的代码

本文介绍了Android代码混淆的重要性和流程,重点讲解如何通过mapping文件定位混淆后的异常堆栈。文章详细阐述了mapping文件的位置、实例操作方法,包括在GUI和命令行环境下如何使用ProGuard工具进行反混淆,以便更好地理解和解决混淆后的代码问题。
摘要由CSDN通过智能技术生成

一 代码混淆的意义

代码混淆的一个主要的目的是为了能够保证代码的安全性:我们的代码发布出去以后,有的用户可能会使用某些反编译工具查看我们的代码,为了避免这样的行为,故有代码混淆。
代码混淆以后,原有代码的包名,类名和方法名会被修改。

二、mapping文件位置

此路径为: app\build\outputs\mapping{}发布渠道}\release\mapping.txt

如果不存在就在gradle中配置:

 release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

在proguard-rules.pro中配置:

-printseeds seeds.txt
-printmapping mapping.txt
-printusage unused.txt
  • 文件说明:
dump.txt  : 描述.apk文件中所有类文件间的内部结构

mapping.txt :列出了原始的类,方法和字段名与混淆后代码间的映射。这个文件很重要,当你从release版本中收到一个bug报告时,可以用它来翻译被混淆的代码。

seeds.txt :列出了未被混淆的类和成员

usage.txt : 列出了从.apk中删除的代码

三、实例操作

  • 混淆后:
java.lang.ArithmeticException: divide by zero
    at com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值