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进行签名。

最新文章

  1. mac终端命令
  2. Spring之JDBC模板jdbcTemplate
  3. Ceph–s ceph 集群状态
  4. IEHelper - Internet Explorer Helper Class
  5. 【Linux】鸟哥的Linux私房菜基础学习篇整理(五)
  6. 部署vc2008开发的程序(三种办法,但是我觉得这种办法最不好)
  7. 运用JavaScript构建你的第一个Metro式应用程序(onWindows 8)(三)
  8. golang的Channel
  9. 使用SQL Server2014作业定时执行无参的存储过程
  10. ABP 框架启程
  11. Docker系列之基础实践篇(上)
  12. VS2019 更新MSDN并创建快捷方式
  13. c#二进制移位运算符 &quot;&lt;&lt;&quot;及&quot;&gt;&gt;&quot;,&quot;&amp;&quot;,&quot;|&quot;,&quot;^&quot;
  14. 在eclipse上集成安装阿里巴巴代码规约P3C插件
  15. Postman+Newman+jenkins实现API自动化测试
  16. 【onclick事件】【改变 HTML 内容innerHTML】【图片替换】【改变标签的css】【判断输入是否是数字】
  17. Linux ifconfig 命令
  18. Gravitee.io Access Management 组件
  19. Codeforces 464D-World of Darkraft - 2
  20. Python 优化第一步: 性能分析实践 使用cporfile+gprof2dot可视化

热门文章

  1. Centos6.4在配置Tomcat7工作文件夹和虚拟路径
  2. JAVA HashMap与HashTable 区别
  3. asp.net 后台对话框,确认跳转
  4. 《JavaScript 闯关记》之对象
  5. GIS-开发例程、源代码、MapXtreme、Map (转)
  6. 安装TDM-GCC
  7. GDAL的安装和配置(编译proj.4)
  8. OpenRisc-40-or1200的MMU模块分析
  9. mysql数据库数据恢复方案概括总结
  10. How can I get the logical valume by the datafile names and ASM disks?