【Android 安全】DEX 加密 ( ProGuard 混淆 | -keepclassmembers 混淆效果 | -keepclasseswithmembernames 混淆效果 )
文章目录
- 一、Proguard 默认混淆结果
- 二、-keepclassmembers 混淆效果
- 二、-keepclasseswithmembernames 混淆效果
更多 ProGuard 混淆配置参考 : https://www.guardsquare.com/en/products/proguard/manual/usage
一、Proguard 默认混淆结果
ProGuard 的默认混淆结果 , 就是没有 人为添加保留任何设置 , 使用的是 默认混淆文件 , 除了 MainActivity , 以及 MainActivity 中的 333 个内部类 , IdleHandler , Handler , Thread , 其余 Java 文件都被混淆 ;
二、-keepclassmembers 混淆效果
-keepclassmembers 作用只是保证类成员 ( 成员变量 , 成员方法 ) 不被混淆 , 类名还是会被混淆的 ;
# 指定 kim.hsl.handler.Handler 类成员不被混淆
-keepclassmembers public class kim.hsl.handler.Handler
在编译后的结果中 , 类名与成员名称都被混淆了 , 因为没有配置不被混淆的成员 ;
使用 -keepclassmembers 指定保留 Handler 中的 public void *(*) 样式的方法不被混淆 ;
# 指定 kim.hsl.handler.Main 类成员不被混淆
-keepclassmembers class kim.hsl.handler.Handler{public void *(*);
}
下面是在一个被混淆的类中 , 找到了没有被混淆的 kim.hsl.handler.Handler 的成员方法 ;
二、-keepclasseswithmembernames 混淆效果
-keepclasseswithmembernames 与 -keep 作用类似 , 都可以保留 类名 与 成员 不被混淆 ,
-keepclasseswithmembernames 配置保留类名 : 下面的配置只会 保留类名 , 成员名会被混淆 ;
# 保留 kim.hsl.handler.Handler 类名 , 函数名会被混淆
-keepclasseswithmembernames class kim.hsl.handler.Handler
下面的混淆结果显示 , kim.hsl.handler.Handler 的类名被保留下来 , 成员被混淆 , 这是因为没有配置要保留的成员 ;
-keepclasseswithmembernames 配置保留类名 , 成员名 : 下面的配置 类名 与 成员名都会被保留 ;
# 保留 kim.hsl.handler.Handler 类名 , 成员名称
-keepclasseswithmembernames class kim.hsl.handler.Handler{*;
}
下图中展示了 , Handler 类中 , 类名 与 成员名称 都被保留下来 ;
-keepclasseswithmembernames 与 -keep 配置区别 : -keepclasseswithmembernames 中假如配置的 保留成员不存在 , 则该 混淆不生效 ;
# 保留 kim.hsl.handler.Handler native 方法名称
-keepclasseswithmembernames class kim.hsl.handler.Handler{native <methods>;----
}
没有找到 Handler 中的 native 方法 , 则整个 Handler 都不保留 , 类名 与 成员 都被混淆了 ;
【Android 安全】DEX 加密 ( ProGuard 混淆 | -keepclassmembers 混淆效果 | -keepclasseswithmembernames 混淆效果 )相关推荐
- 【Android 安全】DEX 加密 ( Proguard 混淆 | 将混淆后的报错信息转为原始报错信息 | retrace.bat 命令执行目录 | 暴露更少信息 )
文章目录 一.将混淆后的报错信息转为原始报错信息 二.retrace.bat 命令执行目录 三.暴露更少信息 更多 ProGuard 混淆配置参考 : https://www.guardsquare. ...
- 【Android 安全】DEX 加密 ( Proguard 简介 | 默认 ProGuard 分析 )
文章目录 一.Proguard 配置简介 二.Proguard 完整注释 一.Proguard 配置简介 更多 ProGuard 混淆配置参考 : https://www.guardsquare.co ...
- 【Android 安全】DEX 加密 ( Proguard 简介 | Proguard 相关网址 | Proguard 混淆配置 )
文章目录 一.Proguard 简介 二.Proguard 相关网址 三.Proguard 混淆配置 一.Proguard 简介 Android 开发中 Proguard 主要作用是对 Java 代码 ...
- 【Android 安全】DEX 加密 ( Proguard 混淆 | 混淆后的报错信息 | Proguard 混淆映射文件 mapping.txt )
文章目录 一.Proguard 混淆后的报错信息 二.Proguard 混淆映射文件 mapping.txt 更多 ProGuard 混淆配置参考 : https://www.guardsquare. ...
- 【Android 安全】DEX 加密 ( Proguard keep 用法 | Proguard 默认混淆结果 | 保留类及成员混淆结果 | 保留注解以及被注解修饰的类/成员/方法 )
文章目录 一.Proguard 默认混淆结果 二.Proguard 保留类及成员混淆结果 三.Proguard 保留注解以及被注解修饰的类/成员/方法 更多 ProGuard 混淆配置参考 : htt ...
- 【Android 安装包优化】开启 ProGuard 混淆 ( 压缩 Shrink | 优化 Optimize | 混淆 Obfuscate | 预检 | 混淆文件编写 | 混淆前后对比 )
文章目录 一.开启 ProGuard 混淆 二.混淆文件编写 三.混淆前后对比 四.build.gradle 完整配置文件 五.参考资料 一.开启 ProGuard 混淆 在 build.gradle ...
- 【Android 安全】DEX 加密 ( 代理 Application 开发 | 项目中配置 OpenSSL 开源库 | 使用 OpenSSL 开源库解密 dex 文件 )
文章目录 一.项目中配置 OpenSSL 开源库 二.OpenSSL 开源库解密参考代码 三.解密 dex 文件的 Java 代码 四.解密 dex 文件的 Jni 代码 参考博客 : [Androi ...
- 【Android 安全】DEX 加密 ( 代理 Application 开发 | 交叉编译 OpenSSL 开源库 )
文章目录 一.OpenSSL 开源库简介 二.OpenSSL 源码及环境变量脚本下载 三.修改环境变量脚本 四.OpenSSL 交叉编译 五.OpenSSL 交叉编译相关资源下载 参考博客 : [An ...
- 【Android 安全】DEX 加密 ( Java 工具开发 | apk 文件签名 )
文章目录 一.生成 jks 文件 二.签名命令 三.执行结果 四.处理 Unsupported major.minor version 52.0 错误 参考博客 : [Android 安全]DEX 加 ...
最新文章
- 编程珠玑——第八章习题10扩展和习题11
- UUID介绍与生成方法
- linux mkfs.ext3 参数,linux命令mkfs.ext3用法[阮胜昌]
- Vue010_ 过滤器
- C# Winform实现捕获窗体最小化、最大化、关闭按钮事件的方法,可通过重写WndProc来实现
- 各个线程顺序循环执行
- 马云卸任,张勇宣布未来五年目标:消费规模10万亿;华为发布基于5G和AI解决方案;新iPhone不支持5G 库克:市场不成熟……...
- 图论——最长路(洛谷 P1807)
- php抓取网页css,php 抓取的页面如何处理可以只保留DOM结构,去掉CSS和JS?
- 12 月 Web 服务器调查:“王者” nginx 增长最快!
- Go实战--golang中defer的使用
- Ubuntu Desktop 变为 Ubuntu Server 服务器版的方法
- sap 双计量单位_SAP双计量单位配置指南CUNI.doc
- 修改docx表格_文件杂乱怎么办?批量整理修改文件名我就用它
- Using Flume要点
- YYKit 源码探究
- Basset: learning the regulatory code of the accessible genome with deep convolutional neural network
- x64dbg安装xAnalyzer插件失败问题解决
- Visual C++ 11 中新的并发功能
- fatal: Authentication failed