android源码混淆笔记

1.  Android Studio 代码混淆(你真的会混淆吗)  

2. Android Studio代码混淆配置

3. Android Studio实现代码混淆

4. java代码混淆

5. ProGuard代码混淆技术详解


除了DIY虚拟机和静态编译,最好的保护方式就是代码混淆。因为只要是装载到标准JVM里的字节码,都能用HotSpotDebuger从内存中直接导出


java代码可以反编译,因此有时候要保护自己的知识产权还真得费点心思,一般来说有三个思路:

  1、将class文件加密,这个是最安全的,但也费事儿,因为要重写classloader来解密class文件;

  2、使用花指令,使得class文件不能反编译(利用反编译工具漏洞);安全性一般,还是有花指令破解器;

  3、代码混淆,提高代码阅读成本;简单易操作,一般采用这种或者与其它方式结合;


ProGuard是一个混淆代码的开源项目,它的主要作用是混淆代码,殊不知ProGuard还包括以下4个功能。

 1. 压缩(Shrink):检测并移除代码中无用的类、字段、方法和特性(Attribute)。

 2. 优化(Optimize):对字节码进行优化,移除无用的指令。

 3. 混淆(Obfuscate):使用a,b,c,d这样简短而无意义的名称,对类、字段和方法进行重命名。

 4. 预检(Preveirfy):在Java平台上对处理后的代码进行预检,确保加载的class文件是可执行的。 (android一般不进行预检)


一般以下情况都会不混淆: 
1.使用了自定义控件那么要保证它们不参与混淆 
2.使用了枚举要保证枚举不被混淆 
3.对第三方库中的类不进行混淆 
4.运用了反射的类也不进行混淆 
5.使用了 Gson 之类的工具要使 JavaBean 类即实体类不被混淆 
6.在引用第三方库的时候,一般会标明库的混淆规则的,建议在使用的时候就把混淆规则添加上去,免得到最后才去找 
7.有用到 WebView 的 JS 调用也需要保证写的接口方法不混淆,原因和第一条一样 
8.Parcelable 的子类和 Creator 静态成员变量不混淆,否则会产生 Android.os.BadParcelableException 异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值