Android 简单的代码混淆
16lz
2021-01-23
Android的代码混淆是开发者需要了解的相关知识,它能够防止android应用程序的反编译。因为android程序多数是java语言开发的,而java代码很容易被反编译,所以为了使android应用程序代码应用一定的安全性,进行android代码的混淆是非常有必要的。
在了解代码混淆之前,先了解android的反编译。进行android的反编译需要借助两个工具dex2jar和jd-gui。
1.代码的反编译
在两个工具准备好之后,将apk文件的直接解压。在解压后的文件中,将classes.dex复制到dex2jar的文件夹中。输入命令:dex2jar.bat classes.dex ,回车。在dex2jar文件夹中会生成classes_dex2jar压缩文件。用jd-gui打开该文件,即可看到android应用程序的源代码。
2.代码混淆
在android工程中添加proguard.cfg.文件。在project.properties中添加proguard.config=proguard.cfg。
-ignorewarnings-libraryjars libs/android-support-v4.jar-libraryjars libs/gson-2.2.4.jar-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 <methods>;}-keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet);}-keepclasseswithmembernames class * { public <init>(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 *;}proguard.cfg
3.项目打包
右键工程,选择androidtools-export unsinged application package。对打包的apk进行反编译。
可以看到,代码都已经进行编译过了。未签名的apk包并不能够安装,还需要将apk进行签名。
更多相关文章
- 重新解压打包android 根文件系统 ramdisk.img
- Android XMl文件中tools前缀
- android ndk 开发之 在 应用程序中使用 jni
- android中读写sd卡文件
- Android 支持的文件类型
- Android下载文本文件和mp3文件
- android project 文件夹