文章目录

  • 一、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 混淆效果 )相关推荐

  1. 【Android 安全】DEX 加密 ( Proguard 混淆 | 将混淆后的报错信息转为原始报错信息 | retrace.bat 命令执行目录 | 暴露更少信息 )

    文章目录 一.将混淆后的报错信息转为原始报错信息 二.retrace.bat 命令执行目录 三.暴露更少信息 更多 ProGuard 混淆配置参考 : https://www.guardsquare. ...

  2. 【Android 安全】DEX 加密 ( Proguard 简介 | 默认 ProGuard 分析 )

    文章目录 一.Proguard 配置简介 二.Proguard 完整注释 一.Proguard 配置简介 更多 ProGuard 混淆配置参考 : https://www.guardsquare.co ...

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

    文章目录 一.Proguard 简介 二.Proguard 相关网址 三.Proguard 混淆配置 一.Proguard 简介 Android 开发中 Proguard 主要作用是对 Java 代码 ...

  4. 【Android 安全】DEX 加密 ( Proguard 混淆 | 混淆后的报错信息 | Proguard 混淆映射文件 mapping.txt )

    文章目录 一.Proguard 混淆后的报错信息 二.Proguard 混淆映射文件 mapping.txt 更多 ProGuard 混淆配置参考 : https://www.guardsquare. ...

  5. 【Android 安全】DEX 加密 ( Proguard keep 用法 | Proguard 默认混淆结果 | 保留类及成员混淆结果 | 保留注解以及被注解修饰的类/成员/方法 )

    文章目录 一.Proguard 默认混淆结果 二.Proguard 保留类及成员混淆结果 三.Proguard 保留注解以及被注解修饰的类/成员/方法 更多 ProGuard 混淆配置参考 : htt ...

  6. 【Android 安装包优化】开启 ProGuard 混淆 ( 压缩 Shrink | 优化 Optimize | 混淆 Obfuscate | 预检 | 混淆文件编写 | 混淆前后对比 )

    文章目录 一.开启 ProGuard 混淆 二.混淆文件编写 三.混淆前后对比 四.build.gradle 完整配置文件 五.参考资料 一.开启 ProGuard 混淆 在 build.gradle ...

  7. 【Android 安全】DEX 加密 ( 代理 Application 开发 | 项目中配置 OpenSSL 开源库 | 使用 OpenSSL 开源库解密 dex 文件 )

    文章目录 一.项目中配置 OpenSSL 开源库 二.OpenSSL 开源库解密参考代码 三.解密 dex 文件的 Java 代码 四.解密 dex 文件的 Jni 代码 参考博客 : [Androi ...

  8. 【Android 安全】DEX 加密 ( 代理 Application 开发 | 交叉编译 OpenSSL 开源库 )

    文章目录 一.OpenSSL 开源库简介 二.OpenSSL 源码及环境变量脚本下载 三.修改环境变量脚本 四.OpenSSL 交叉编译 五.OpenSSL 交叉编译相关资源下载 参考博客 : [An ...

  9. 【Android 安全】DEX 加密 ( Java 工具开发 | apk 文件签名 )

    文章目录 一.生成 jks 文件 二.签名命令 三.执行结果 四.处理 Unsupported major.minor version 52.0 错误 参考博客 : [Android 安全]DEX 加 ...

最新文章

  1. 编程珠玑——第八章习题10扩展和习题11
  2. UUID介绍与生成方法
  3. linux mkfs.ext3 参数,linux命令mkfs.ext3用法[阮胜昌]
  4. Vue010_ 过滤器
  5. C# Winform实现捕获窗体最小化、最大化、关闭按钮事件的方法,可通过重写WndProc来实现
  6. 各个线程顺序循环执行
  7. 马云卸任,张勇宣布未来五年目标:消费规模10万亿;华为发布基于5G和AI解决方案;新iPhone不支持5G 库克:市场不成熟……...
  8. 图论——最长路(洛谷 P1807)
  9. php抓取网页css,php 抓取的页面如何处理可以只保留DOM结构,去掉CSS和JS?
  10. 12 月 Web 服务器调查:“王者” nginx 增长最快!
  11. Go实战--golang中defer的使用
  12. Ubuntu Desktop 变为 Ubuntu Server 服务器版的方法
  13. sap 双计量单位_SAP双计量单位配置指南CUNI.doc
  14. 修改docx表格_文件杂乱怎么办?批量整理修改文件名我就用它
  15. Using Flume要点
  16. YYKit 源码探究
  17. Basset: learning the regulatory code of the accessible genome with deep convolutional neural network
  18. x64dbg安装xAnalyzer插件失败问题解决
  19. Visual C++ 11 中新的并发功能
  20. fatal: Authentication failed

热门文章

  1. ubuntu---php脚本中执行换行
  2. FTP之‘基础连接已关闭:服务器提交了协议冲突’错误探析
  3. 关于算法的时间复杂度怎么计算
  4. [日常工作]偷懒创建一个存储过程进行模拟工作.
  5. HTTP错误代码对应
  6. And it's over,And it's a new start
  7. CSS中Float概念相关文章
  8. Oracle Linux 6.1 说明
  9. SQL改變字符串標識符
  10. 以服务的方式提供站点基础功能支持