【Android 安全】DEX 加密 ( Proguard 简介 | Proguard 相关网址 | Proguard 混淆配置 )(一)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 【Android 安全】DEX 加密 ( Proguard 简介 | Proguard 相关网址 | Proguard 混淆配置 )(一)

文章目录

一、Proguard 简介

二、Proguard 相关网址

三、Proguard 混淆配置





一、Proguard 简介


Android 开发中 Proguard 主要作用是对 Java 代码进行如下操作 :


压缩 Shrink : 检测并 删除 没有使用的类 , 字段 , 方法 , 属性 ;

优化 Optimize : 优化字节码 , 移除无用指令 ;

混淆 Obfuscate : 使用 a , b , c 无意义名称 , 对开发者定义的 类 , 字段 , 方法 进行 重命名 , 增加阅读难度 ;

预检 Preveirfy : Java 平台对 处理后的代码 进行预检 ;

最常用的是混淆操作 ;



上述执行顺序 : 压缩 Shrink -> 优化 Optimize -> 混淆 Obfuscate -> 预检 Preveirfy ;






二、Proguard 相关网址


Proguard 官网 : https://www.guardsquare.com/en/products/proguard


Proguard 官方指导手册 : https://www.guardsquare.com/en/products/proguard/manual


Proguard 用法 : https://www.guardsquare.com/en/products/proguard/manual/usage


Proguard 混淆相关文档 : https://www.guardsquare.com/en/products/proguard/manual/usage#keepoptions



image.png





三、Proguard 混淆配置


Proguard 混淆相关文档 : https://www.guardsquare.com/en/products/proguard/manual/usage#keepoptions



Proguard 混淆配置 :


-keep 指定 类 , 类成员 , 不被混淆 ; ( 类成员指的是类的成员方法 和 成员属性 )


-keepclassmembers 指定 类成员 不被混淆 , 类 和 类 方法 可以混淆 ;


-keepclasseswithmembers 指定 类 和 类成员 , 不被混淆 , 前提是 指定的类成员存在 ;



开启 Proguard : 在 Module 下的 build.gradle 中进行如下配置 , 其中 release 标签是进行发布版本的混淆设置 , debug 标签是测试版本的混淆设置 ;


android {
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled true
            // 打印 proguard-android-optimize.txt 路径
            print("proguardPath = ${getDefaultProguardFile('proguard-android-optimize.txt')}")
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}


上述 proguard-rules.pro 是开发者自己手动配置的 ,


上述 proguard-android-optimize.txt 混淆配置文件是系统自动生成的 ,


该 proguard-android-optimize.txt 文件生成的依据是根据开发者的 proguard-rules.pro 混淆配置生成的 ;


目录
相关文章
|
8月前
|
druid Java 数据库
druid+springboot加解密Druid链接池配置加密密码链接数据库
druid+springboot加解密Druid链接池配置加密密码链接数据库
369 0
|
2月前
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
85 3
|
2月前
|
安全 应用服务中间件 网络安全
配置Nginx反向代理实现SSL加密访问的步骤是什么?
我们可以成功地配置 Nginx 反向代理实现 SSL 加密访问,为用户提供更安全、可靠的网络服务。同时,在实际应用中,还需要根据具体情况进行进一步的优化和调整,以满足不同的需求。SSL 加密是网络安全的重要保障,合理配置和维护是确保系统安全稳定运行的关键。
158 3
|
2月前
|
存储 安全 数据安全/隐私保护
Docker中配置TLS加密的步骤
我们可以在 Docker 中成功配置 TLS 加密,增强 Docker 环境的安全性,保护容器之间以及与外界的通信安全。需要注意的是,在实际应用中,应根据具体情况进行更细致的配置和调整,确保符合安全要求。同时,定期更新证书和私钥,以保障安全性。
72 1
|
4月前
|
算法 Java 数据安全/隐私保护
国密加密算法简介
国密指国家密码局认定的国产密码算法,主要包括SM1、SM2、SM3、SM4等,并持续完善。SM1是对称加密算法,加密强度与AES相当,需加密芯片支持;SM2是非对称加密,基于ECC算法,签名和密钥生成速度优于RSA;SM3为杂凑算法,安全性高于MD5;SM4为对称加密算法,用于无线局域网标准。本文提供使用Java和SpringBoot实现SM2和SM4加密的示例代码及依赖配置。更多国密算法标准可参考国家密码局官网。
390 1
|
5月前
|
jenkins 应用服务中间件 持续交付
如何配置 Nginx 作为 Jenkins 的反向代理并启用 SSL 加密
如何配置 Nginx 作为 Jenkins 的反向代理并启用 SSL 加密
278 8
|
5月前
|
JSON 算法 API
【Azure API 管理】APIM 配置Validate-JWT策略,验证RS256非对称(公钥/私钥)加密的Token
【Azure API 管理】APIM 配置Validate-JWT策略,验证RS256非对称(公钥/私钥)加密的Token
|
5月前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
456 0
|
7月前
|
存储 安全 API
使用KMS为Apollo配置中心敏感配置加密的最佳实践
使用KMS为Apollo配置中心敏感配置加密的最佳实践
884 2
|
8月前
|
安全 网络协议 应用服务中间件
一文读懂HTTPS⭐揭秘加密传输背后的原理与Nginx配置攻略
一文读懂HTTPS⭐揭秘加密传输背后的原理与Nginx配置攻略