博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android代码混淆proguard技… 分类: Android安装...
阅读量:4697 次
发布时间:2019-06-09

本文共 2771 字,大约阅读时间需要 9 分钟。

http://www.myexception.cn/android/1477945.html
由于各种反编译工具的泛滥,作为Android程序员在2.3版本以前只能通过手动添加proguard来实现代码混淆


proguard这个工具是一个java代码混淆的工具


在2.3版本的sdk中我们可以看到在android-sdk-windows/tools/下面多了一个proguard文件夹

google已经把proguard技术放在了androidsdk里面 可以通过正常的编译方式也能实现代码混淆了

Android <wbr>代码混淆proguard技术引见及使用步骤ZZ

可以看见新建一个工程里面有default.properties和proguard.cfg


默认的default.properties代码如下

# This file is automatically generated by Android Tools.  # Do not modify this file -- YOUR CHANGES WILL BE ERASED!  #  # This file must be checked in Version Control Systems.  #  # To customize properties used by the Ant build system use,  # "build.properties", and override values to adapt the script to your  # project structure.  # Project target.  target=android-9

我们可以看到proguard.cfg已经帮我们写好了优化代码脚本

-optimizationpasses 5-dontusemixedcaseclassnames-dontskipnonpubliclibraryclasses-dontpreverify-verbose-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*-keep public class * extends android.app.Activity-keep public class * extends android.app.Application-keep public class * extends android.app.Service-keep public class * extends android.content.BroadcastReceiver-keep public class * extends android.content.ContentProvider-keep public class com.android.vending.licensing.ILicensingService-keepclasseswithmembernames class * {    native ;}-keepclasseswithmembernames class * {    public (android.content.Context, android.util.AttributeSet);}-keepclasseswithmembernames class * {    public (android.content.Context, android.util.AttributeSet, int);}-keepclassmembers enum * {    public static **[] values();    public static ** valueOf(java.lang.String);}-keep class * implements android.os.Parcelable {  public static final android.os.Parcelable$Creator *;}

从脚本中可以看到,混淆中保留了继承自Activity、Service、Application、BroadcastReceiver、ContentProvider等基本组件以及com.android.vending.licensing.ILicensingService


并保留了所有的Native变量名及类名,所有类中部分以设定了固定参数格式的构造函数,枚举等等。(详细信息请参考/examples中的例子及注释。)


接下来按照google帮助文档里说的

引用
To enable ProGuard so that it runs as part of an Ant or Eclipsebuild, set the proguard.config property in the /default.propertiesfile. The path can be an absolute path or a path relative to theproject's root.

所以我们修改default.propertiesfile

加上一句

proguard.config=proguard.cfg

如下

# This file is automatically generated by Android Tools.  # Do not modify this file -- YOUR CHANGES WILL BE ERASED!  #  # This file must be checked in Version Control Systems.  #  # To customize properties used by the Ant build system use,  # "build.properties", and override values to adapt the script to your  # project structure.  # Project target.  target=android-9  proguard.config=proguard.cfg

然后正常的编译签名即可


然后用AndroidTools生成一个发布的apk即可

Android <wbr>代码混淆proguard技术引见及使用步骤ZZ

然后用反编译工具查看dex文件

最后导出反编译之后的混淆代码如下图

Android <wbr>代码混淆proguard技术引见及使用步骤ZZ

是不是很轻松加愉快!希望各位程序员都能保护好自己的Android代码!

转载于:https://www.cnblogs.com/leansmall/p/4715928.html

你可能感兴趣的文章
试探算法
查看>>
jquery.validation.js 使用
查看>>
数据库高级查询
查看>>
C语言实现封装、继承和多态
查看>>
创建文件
查看>>
Nginx 相关介绍
查看>>
leetcode[33]Search in Rotated Sorted Array
查看>>
安卓上按钮绑定监听事件的两种写法
查看>>
OpenCV Shi-Tomasi角点检测子
查看>>
eval(PHP 4, PHP 5)
查看>>
readelf用法小记
查看>>
结对编程进展总结
查看>>
Java中JavaScript unescape与escape函数算法
查看>>
js的基础要点
查看>>
第一篇
查看>>
C#结构体和类的区别
查看>>
模板 - 数论函数
查看>>
windows Api AlphaBlend的使用方法
查看>>
mysql主从延迟高的原因
查看>>
Leetcode 47. Permutations II
查看>>