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

文章目录

一、Proguard 默认混淆结果

二、-keepclassmembers 混淆效果

二、-keepclasseswithmembernames 混淆效果


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






一、Proguard 默认混淆结果


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


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






二、-keepclassmembers 混淆效果


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


# 指定 kim.hsl.handler.Handler 类成员不被混淆
-keepclassmembers  public class kim.hsl.handler.Handler


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

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




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


# 指定 kim.hsl.handler.Main 类成员不被混淆
-keepclassmembers class kim.hsl.handler.Handler{
    public void *(*);
}


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


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





上一篇:云栖大会分享:买单侠的数据库架构之路


下一篇:SMB v3远程拒绝服务漏洞分析