proguar在Android混淆中的用法

作者:laozhang 时间:2021-10-01 01:12:12 

混淆器通过删除从未用过的代码和使用晦涩名字重命名类、字段和方法,对代码进行压缩,优化和混淆。结果是一个比較小的.apk文件,该文件比較难进行逆向project。因此,当你的应用程序对安全敏感(要求高),比如当你授权应用程序的时候,混淆器是一种重要的保护手段。

proguard 基本语法


// 保留native方法的方法的方法名和包含native方法的类的类名不变

-keepclasseswithmembernames class {
native<methods>;
}

// 保留继承与View的类中的set*和get*方法
-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}

// 保留继承与Activity的类中以View为参数的方法
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}

// 保留实现了Parcelable 接口的类的类名以及实现了 Parcelanle$Creator 的内部类
-keep class * implemenets android.os.Parcelable {
public static final android.os.Parcelanle$Creator *;
}

// 保留 R$*类中静态字段的字段名
-keep class **.R$* {
public static <fields>;
}

也就是

类名不混淆 用keep

方法名不混淆 用keepclassmembers 或者 keepclasseswithmembernames(后者用于native不混淆)

不混淆的情况:

1 jni 调用java方法

2 四大组件

3 R文件

4 某些通过反射调用的类或方法

5 第三jar包(一般情况下不要混淆)

混淆去掉log


-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String,int);
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
public static int e(...);
}

 assumenosideeffects,proguard 配置文件里的参数。assume no side effects;假定无效;该属性也就是标识无效代码。我们就是通过这个参数来让proguard删除日志代码。

来源:https://www.cnblogs.com/622698abc/p/7894815.html

标签:proguar,Android,混淆
0
投稿

猜你喜欢

  • Unity实现3D循环滚动效果

    2023-04-22 14:05:47
  • 深入解析Java并发程序中线程的同步与线程锁的使用

    2022-03-19 10:25:38
  • Java回调方法详解

    2022-09-25 08:33:54
  • Android ListView的item背景色设置和item点击无响应的解决方法

    2021-07-30 11:26:16
  • Java实现MD5消息摘要算法

    2023-06-18 06:37:35
  • java实现图片滑动验证(包含前端代码)

    2022-03-21 12:13:52
  • SpringBoot如何读取xml配置bean(@ImportResource)

    2021-08-03 22:33:44
  • java 优雅关闭线程池的方案

    2022-03-20 23:05:44
  • 深入理解Java设计模式之外观模式

    2023-05-02 09:48:00
  • 浅析Java随机数与定时器

    2022-06-04 16:21:10
  • RocketMQ源码分析之Broker过期消息清理机制

    2023-06-10 15:47:43
  • 基于C#实现XML文件读取工具类

    2021-10-07 07:42:19
  • 详解Spring框架入门

    2023-08-14 12:56:14
  • C# WinForm快捷键设置技巧

    2023-07-20 07:03:13
  • Springboot整合PageOffice 实现word在线编辑保存功能

    2022-12-03 22:38:18
  • IntelliJ IDEA基于SpringBoot如何搭建SSM开发环境的步骤详解

    2022-11-24 12:10:39
  • Java TreeSet实现学生按年龄大小和姓名排序的方法示例

    2023-01-09 15:25:18
  • C#代码实现PDF文档操作类

    2022-01-30 07:03:02
  • Java虚拟机之类加载

    2022-11-15 05:19:19
  • Java中死锁与活锁的具体实现

    2023-10-29 01:48:02
  • asp之家 软件编程 m.aspxhome.com