代码混淆

作者: 沅兮 | 来源:发表于2017-07-14 11:06 被阅读0次

什么是混淆?

  • 代码混淆:花指令,是将计算机程序的代码,转换成一种功能上等价,但是难以阅读和理解的形式的行为。
  • 代码混淆影响的元素有:类名、变量名、方法名、包名、其他等。
  • 混淆的目的:为了加大反编译的成本,但是并不能彻底防止反编译。

如何开启混淆

  • 通常我们需要找到项目路径下app目录下的build.gradle文件。
  • 找到minifyEnabled这个配置,然后设置为true即可。
buildTypes {
        release {
            minifyEnabled true -- 开启混淆
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'~~~

##### Proguard是什么?
- Proguard是一个集文件压缩,优化,混淆和校验等功能的工具。
- 它检测并删除无用的类、变量、方法和属性。
- 它优化字节码并删除无用的指令。
- 它通过将类名、变量名和方法名重命名为无意义的名称实现混淆效果。
- 最后它还校验处理后的代码。

##### 混淆的常见配置 -- keep

- Keep用来保留Java的元素不进行混淆,keep有很多变种:
> -keep
-keepclassmembers
-keepclasseswithmembers

- 保留某个包下面的类以及子包
> -keep public class com.droidyue.com.widget.**

- 保留所有类中使用otto的public方法
> Otto
-keepclassmembers class ** {
    @com.squareup.otto.Subscribe public *;
    @com.squareup.otto.Produce public *;
}

- 保留Contants类的BOOK_NAME属性
> -keepclassmembers class com.example.admin.proguardsample.Constants {
     public static java.lang.String BOOK_NAME;
}

##### 混淆的常见配置 -- dontwarn
- dontwarn是一个和keep形影不离,尤其是处理引入的library时。
- 引入的library可能存在一些无法找到的引用和其他问题,在build时可能会发出警告,如果我们不进行处理,通常会导致build中止。因此为了保证build继续,我们需要使用dontwarn处理这些我们无法解决的library的警告。

##### 关闭Twitter sdk的警告
> -dontwarn com.twitter.sdk.**

# 哪些不应该混淆
- 反射中使用的元素
- GSON的序列化与反序列化
- 枚举
- 四大组件不建议混淆
- 注解不能混淆
- jni调用的java方法
- java的native方法
- js调用java的方法
- 第三方库不建议混淆
- 反射相关的一些情况

相关文章

  • Android项目的代码混淆

    代码混淆: 代码混淆有两种重要功能。其一,混淆代码。其二,优化代码。有的混淆是根据自己写得代码有关,需要根据异常错...

  • iOS 初探代码混淆(OC)

    iOS 初探代码混淆(OC) iOS 初探代码混淆(OC)

  • ProGuard详解

    Android分享:代码混淆那些事Android代码混淆之混淆规则Android-Dev-Favorites An...

  • Android代码混淆

    待整理。。。 参考: Android混淆从入门到精通 Android代码混淆之混淆规则 代码混淆规则配置文件:pr...

  • iOS-代码混淆加固策略

    iOS-代码混淆加固策略 iOS-代码混淆加固策略

  • iOS应用安全之代码混淆

    iOS应用安全之代码混淆iOS应用安全之代码混淆

  • 代码混淆

    混淆就是在你不想开源代码的时候对代码进行混淆处理,让代码即使被反编译也难以阅读,而且还可以精简编译后程序的大小 一...

  • 代码混淆

    傻瓜式模板

  • 代码混淆

    iOS代码混淆----自动 app 安全(一): 代码混淆防止反编译查看真实的头文件函数声明 iOS安全攻防(二十...

  • 代码混淆

    什么是混淆? 代码混淆:花指令,是将计算机程序的代码,转换成一种功能上等价,但是难以阅读和理解的形式的行为。 代码...

网友评论

    本文标题:代码混淆

    本文链接:https://www.haomeiwen.com/subject/adunhxtx.html