前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android 安全】DEX 加密 ( ProGuard 混淆 | -keepclassmembers 混淆效果 | -keepclasseswithmembernames 混淆效果 )

【Android 安全】DEX 加密 ( ProGuard 混淆 | -keepclassmembers 混淆效果 | -keepclasseswithmembernames 混淆效果 )

作者头像
韩曙亮
发布2023-03-28 18:52:43
4.4K0
发布2023-03-28 18:52:43
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

更多 ProGuard 混淆配置参考 : https://www.guardsquare.com/en/products/proguard/manual/usage

一、Proguard 默认混淆结果


ProGuard 的默认混淆结果 , 就是没有 人为添加保留任何设置 , 使用的是 默认混淆文件 , 除了 MainActivity , 以及 MainActivity 中的

3

个内部类 , IdleHandler , Handler , Thread , 其余 Java 文件都被混淆 ;

在这里插入图片描述
在这里插入图片描述

二、-keepclassmembers 混淆效果


-keepclassmembers 作用只是保证类成员 ( 成员变量 , 成员方法 ) 不被混淆 , 类名还是会被混淆的 ;

代码语言:javascript
复制
# 指定 kim.hsl.handler.Handler 类成员不被混淆
-keepclassmembers  public class kim.hsl.handler.Handler

在编译后的结果中 , 类名与成员名称都被混淆了 , 因为没有配置不被混淆的成员 ;

在这里插入图片描述
在这里插入图片描述

使用 -keepclassmembers 指定保留 Handler 中的 public void *(*) 样式的方法不被混淆 ;

代码语言:javascript
复制
# 指定 kim.hsl.handler.Main 类成员不被混淆
-keepclassmembers class kim.hsl.handler.Handler{
    public void *(*);
}

下面是在一个被混淆的类中 , 找到了没有被混淆的 kim.hsl.handler.Handler 的成员方法 ;

在这里插入图片描述
在这里插入图片描述

二、-keepclasseswithmembernames 混淆效果


-keepclasseswithmembernames 与 -keep 作用类似 , 都可以保留 类名 与 成员 不被混淆 ,

-keepclasseswithmembernames 配置保留类名 : 下面的配置只会 保留类名 , 成员名会被混淆 ;

代码语言:javascript
复制
# 保留 kim.hsl.handler.Handler 类名 , 函数名会被混淆
-keepclasseswithmembernames class kim.hsl.handler.Handler

下面的混淆结果显示 , kim.hsl.handler.Handler 的类名被保留下来 , 成员被混淆 , 这是因为没有配置要保留的成员 ;

在这里插入图片描述
在这里插入图片描述

-keepclasseswithmembernames 配置保留类名 , 成员名 : 下面的配置 类名 与 成员名都会被保留 ;

代码语言:javascript
复制
# 保留 kim.hsl.handler.Handler 类名 , 成员名称
-keepclasseswithmembernames class kim.hsl.handler.Handler{
    *;
}

下图中展示了 , Handler 类中 , 类名 与 成员名称 都被保留下来 ;

在这里插入图片描述
在这里插入图片描述

-keepclasseswithmembernames 与 -keep 配置区别 : -keepclasseswithmembernames 中假如配置的 保留成员不存在 , 则该 混淆不生效 ;

代码语言:javascript
复制
# 保留 kim.hsl.handler.Handler native 方法名称
-keepclasseswithmembernames class kim.hsl.handler.Handler{
    native <methods>;----
}

没有找到 Handler 中的 native 方法 , 则整个 Handler 都不保留 , 类名 与 成员 都被混淆了 ;

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、Proguard 默认混淆结果
  • 二、-keepclassmembers 混淆效果
  • 二、-keepclasseswithmembernames 混淆效果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档