android 混淆规则作用,Android代码混淆详解

android 混淆规则作用,Android代码混淆详解一、混淆的意义混淆代码并不是让代码无法被反编译,而是将代码中的类、方法、变量等信息进行重命名,把它们改成一些毫无意义的名字,同时也可以移除未被使用的类、方法、变量等。所以直观的看,通过混淆可以提高程序的安全性,增加逆向工程的难度,同时也有效缩减了apk的体积。总结如下:1、将项目中的类、方法、变量等信息进行重命名,变成一些无意义的简短名字。2、移除未被使用的类、方法、变量等。二、混淆的规则和配置…

大家好,又见面了,我是你们的朋友全栈君。

一、混淆的意义

混淆代码并不是让代码无法被反编译,而是将代码中的类、方法、变量等信息进行重命名,把它们改成一些毫无意义的名字,同时也可以移除未被使用的类、方法、变量等。 所以直观的看,通过混淆可以提高程序的安全性,增加逆向工程的难度,同时也有效缩减了apk的体积。总结如下:

1、将项目中的类、方法、变量等信息进行重命名,变成一些无意义的简短名字。

2、移除未被使用的类、方法、变量等。

二、混淆的规则和配置

凡是需要在AndroidManifest.xml中去注册的所有类的类名以及从父类重写的方法名都自动不会被混淆。 因此,除了Activity之外,这份规则同样也适用于Service、BroadcastReceiver和ContentProvider。

(1)minifyEnabled

minifyEnabled为true的作用:启用代码混淆、压缩APK;

minifyEnabled会对资源进行压缩,多余的代码在打包的时候就给移除掉了。不仅仅是代码,没有被调用的资源同样也会被移除掉,因此minifyEnabled除了混淆代码之外,还可以起到压缩APK包的作用。

开启混淆后也可添加shrinkResources,表示开启删除无用资源。

(2)shrinkResources

shrinkResources为true用来开启删除无用资源。

shrinkResources会对就是没有被引用的文件(经过实测是drawable,layout,实际并不是彻底删除,而是保留文件名,但是没有内容),但是因为需要知道是否被引用所以需要配合mififyEnable使用,只有当两者都为true的时候才会起到真正的删除无效代码和无引用资源的目的。

(3)避免被误删除

若配置minifyEnable true && shrinkResources true,防止避免误删除的文件,可以配置如下: 在res/raw/keep.xml(避免被误删除)写了配置的

对于没有被引用的文件&没有在配置文件keep.xml中声明保存的文件,打包后是没有内容的,声明保存的文件有内容(资源文件和layout文件)。 注意:string.xml中没有被引用的怎么设置都不会被删除。

(4)proguard-android.txt和proguard-rules.pro

proguard-android.txt:代表系统默认的混淆规则配置文件,该文件在/tools/proguard下,一般不要更改该配置文件,因为也会作用于其它项目。

proguard-rules.pro:代码表当前Project的混淆配置文件,在app module下,可以通过修改该文件来添加适用当前项目的混淆规则。

(5)proguard文件夹

代码混淆生成apk之后,项目下面会多出来一个proguard文件夹,proguard文件夹中四个文件的作用。

dump.txt : 描述了apk中所有类文件中内部的结构体。

mapping.txt : 列出了原始的类、方法和名称与混淆代码间的映射。

seeds.txt : 列出了没有混淆的类和方法。

usage.txt : 列出congapk中删除的代码。

三、编写自己的混淆代码

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139132.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • js判断是否包含指定字符串_判断字符串

    js判断是否包含指定字符串_判断字符串JavaScript判断字符串是否包含某个字符串String对象indexOf()indexOf()返回某个指定的字符串值在字符串中首次出现的位置。如果要检索的字符串值没有出现,则该方法返回-1。varstr=”中华人民共和国”;console.info(str.indexOf(“人民”)!=-1);//trueconsole.info(str.in…

    2022年10月7日
    2
  • pytorch BatchNorm参数详解,计算过程

    pytorch BatchNorm参数详解,计算过程BatchNorm1d的参数:torch.nn.BatchNorm1d(num_features,eps=1e-05,momentum=0.1,affine=True,track_running_stats=True)

    2022年5月24日
    95
  • VB学习总结「建议收藏」

    VB学习总结「建议收藏」无论是生活还是学习,都要不断的总结和思考。学习中,不可以偷懒,你对它偷懒,它就会对你更加偷懒;同样,没有规律和反思的生活是平淡如水,没有进步的,今天的我们应该能和昨天面对面,每天进步一点点。   这次的总结是对全部模块的总结,记录此刻的学习轨迹,以供以后反思学习,同时分享给大家,欢迎大家批评建议。      1.总结大纲——时间管理,计划同步    2.

    2022年6月21日
    20
  • opkg list 报错

    opkg list 报错opkglistCollectederrors:*opkg_conf_load:Couldnotlock/var/lock/opkg.lock:Resourcetemporarilyunavail echo”nameserver114.114.114.114″>/tmp/resolv.conf rm-f/var/lock/opkg.lock opkgupdate

    2022年5月27日
    112
  • 金士顿u盘提示这张磁盘有写保护_金士顿u盘量产工具怎么使用

    金士顿u盘提示这张磁盘有写保护_金士顿u盘量产工具怎么使用2019独角兽企业重金招聘Python工程师标准>>>…

    2025年10月15日
    2
  • Jmeter面试题_java面试笔试题

    Jmeter面试题_java面试笔试题一、Jmeter的关联用到了哪些方法去实现?接口的响应结果通常为html和Json格式的数据,主要会用到正则提取器、Json提取器,还有Xpath器以及边界值提取器,还有beanshell来进行数据的提取,而对于html这种响应结果我们通常会用正则或者是Xpath来进行数据的提取;对于Json格式的数据通常会用Json提取器。二、Fiddler断点在工作中有什么作用?主要是用来修改请求和响应数据的,比如我们的VX(微信)发红包功能,其实在前端是设置了一个一分钱到两百块钱的金额限制,当我们做测试的时候想

    2022年9月30日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号