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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 【Android 安全】DEX 加密 ( Proguard keep 用法 | Proguard 默认混淆结果 | 保留类及成员混淆结果 | 保留注解以及被注解修饰的类/成员/方法 )

文章目录

一、Proguard 默认混淆结果

二、Proguard 保留类及成员混淆结果

三、Proguard 保留注解以及被注解修饰的类/成员/方法


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






一、Proguard 默认混淆结果


ProGuard 的默认混淆结果 , 就是没有 人为添加保留任何设置 , 使用的是 默认混淆文件 , 除了 MainActivity , 以及 MainActivity 中的 3 33 个内部类 , IdleHandler , Handler , Thread , 其余 Java 文件都被混淆 ;

image.png







二、Proguard 保留类及成员混淆结果


在 应用 Module 下的 proguard-rules.pro 中进行如下配置 :


# 保留 MainActivity 类名
-keep public class kim.hsl.handler.MainActivity


混淆结果如下 : 可以看到 MainActivity 类名被保留下来 , 成员由于没有配置 , 因此被混淆了 ;

image.png




保留 MainActivity 类名 , 成员变量名称 , 成员方法名称 ,


# 保留 MainActivity 类名,成员变量名称
-keep public class kim.hsl.handler.MainActivity{
    *;
}


由下图可以看出 , 成员变量 , 成员方法 的名称都保存下来了 ;


image.png






三、Proguard 保留注解以及被注解修饰的类/成员/方法


创建注解 :image.png




package kim.hsl.handler;
public @interface Keep {
}



ProGuard 中配置 保留该注解 , 以及 被该注解修饰的类 ;


# 保留 Main 类及成员
-keep public class kim.hsl.handler.Main
# 保留 Keep 注解
-keep public class kim.hsl.handler.Keep
# 保留被 Keep 注解修饰的类
-keep @kim.hsl.handler.Keep class * {*;}



使用上述注解修饰 Handler 类 , 下面的代码中只需要关注 @Keep 注解即可 ;


package kim.hsl.handler;
@Keep
public class Handler {
    /**
     * 消息队列
     * 该消息队列封装在 Looper 中
     * Looper 封装在线程本地变量中
     */
    MessageQueue mQueue;
    public Handler(){
        /*
            在 Handler 中需要拿到 Looper
            进而拿到 Looper 中的 MessageQueue 消息队列
            Handler 的操作就是将 Message 放入 MessageQueue
            因此在 Handler 中需要持有 MessageQueue 消息队列的引用
            获取 Looper 时 , Looper 必须已经初始化完毕,
            也就是已经调用过 prepare 创建了 Looper 并将其放入了线程本地变量
         */
        // 获取当前线程中的 线程本地变量 Looper
        Looper looper = Looper.looper();
        // 获取封装在 Looper 中的 消息队列 MessageQueue
        mQueue = looper.mQueue;
    }
    /**
     * 发送消息
     * @param msg
     */
    public void sendMessage(Message msg){
        // 为消息设置发送的 Handler
        msg.target = this;
        // 向消息队列中放入要执行的消息
        mQueue.enqueueMessage(msg);
    }
    /**
     * 执行消息对应的任务
     * @param next
     */
    public void handleMessage(Message next) {
    }
}




编译混淆结果 : Handler 的类 和 成员没有被混淆 ;


image.png


因此可以使用注解形式 , 灵活配置某个类 / 方法 / 成员 不被混淆 ;


目录
相关文章
|
1月前
|
存储 安全 API
如何对 API 进行安全加密?
对API进行安全加密是保障数据安全和系统稳定的重要措施
151 56
|
2月前
|
存储 安全 5G
|
22天前
|
存储 安全 Android开发
探索Android系统的最新安全特性
在数字时代,智能手机已成为我们生活中不可或缺的一部分。随着技术的不断进步,手机操作系统的安全性也越来越受到重视。本文将深入探讨Android系统最新的安全特性,包括其设计理念、实施方式以及对用户的影响。通过分析这些安全措施如何保护用户免受恶意软件和网络攻击的威胁,我们希望为读者提供对Android安全性的全面了解。
|
2月前
|
存储 安全 前端开发
端到端加密:确保数据传输安全的最佳实践
【10月更文挑战第12天】端到端加密(E2EE)是确保数据传输安全的重要手段,通过加密技术保障数据在传输过程中的隐私与完整性,防止第三方窃听和篡改。本文介绍E2EE的工作原理、核心优势及实施步骤,并探讨其在即时通讯、文件共享和金融服务等领域的应用,强调了选择加密协议、密钥管理、数据加密及安全接口设计的重要性,旨在帮助企业和开发者有效保护用户数据,满足数据保护法规要求。
|
2月前
|
安全 数据安全/隐私保护 CDN
阿里云国际站:海外视频安全的DRM
阿里云国际站:海外视频安全的DRM加密
|
2月前
|
安全 数据安全/隐私保护 CDN
阿里云海外视频安全的DRM
阿里云海外视频安全的DRM加密
|
20天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
21天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
43 10
|
22天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
46 10
|
23天前
|
SQL 安全 网络安全
网络安全漏洞、加密技术与安全意识的知识分享
随着互联网的普及,网络安全问题日益严重。本文将介绍网络安全漏洞的概念、类型和防范措施,以及加密技术的原理和应用。同时,强调提高个人和企业的安全意识对于防范网络攻击的重要性。