Android如何防止apk程序被反编译

操作方法

  • 01

    作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来。Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了一个proguard文件夹proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护代码的作用。下面具体说一说怎么样让SDK2.3下的proguard.cfg文件起作用,先来看看android-sdk-windows\tools\lib\proguard.cfg的内容:[html] view plaincopyprint?1.-optimizationpasses 5 2.-dontusemixedcaseclassnames 3.-dontskipnonpubliclibraryclasses 4.-dontpreverify 5.-verbose 6.-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 7. 8.-keep public class * extends android.app.Activity 9.-keep public class * extends android.app.Application 10.-keep public class * extends android.app.Service 11.-keep public class * extends android.content.BroadcastReceiver 12.-keep public class * extends android.content.ContentProvider 13.-keep public class * extends android.app.backup.BackupAgentHelper 14.-keep public class * extends android.preference.Preference 15.-keep public class com.android.vending.licensing.ILicensingService 16. 17.-keepclasseswithmembernames class * { 18.    native <methods>; 19.} 20. 21.-keepclasseswithmembernames class * { 22.    public <init>(android.content.Context, android.util.AttributeSet); 23.} 24. 25.-keepclasseswithmembernames class * { 26.    public <init>(android.content.Context, android.util.AttributeSet, int); 27.} 28. 29.-keepclassmembers enum * { 30.    public static **[] values(); 31.    public static ** valueOf(java.lang.String); 32.} 33. 34.-keep class * implements android.os.Parcelable { 35.  public static final android.os.Parcelable$Creator *; 36.} -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 * extends android.app.backup.BackupAgentHelper-keep public class * extends android.preference.Preference-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 *;}从脚本中可以看到,混淆中保留了继承自Activity、Service、Application、BroadcastReceiver、ContentProvider等基本组件以及com.android.vending.licensing.ILicensingService,并保留了所有的Native变量名及类名,所有类中部分以设定了固定参数格式的构造函数,枚举等等。(详细信息请参考<proguard_path>/examples中的例子及注释。)让proguard.cfg起作用的做法很简单,就是在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”就可以了完整的default.properties文件应该如下:[html] view plaincopyprint?1.# This file is automatically generated by Android Tools. 2.# Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3.# 4.# This file must be checked in Version Control Systems. 5.# 6.# To customize properties used by the Ant build system use, 7.# "build.properties", and override values to adapt the script to your 8.# project structure. 9. 10.# Project target. 11.target=android-9 12.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-9proguard.config=proguard.cfg大功告成,正常的编译签名后就可以防止代码被反编译了。反编译经过代码混淆的apk得到的代码应该类似于下面的效果,是很难看懂的:如果您使用的是2.3之前的SDK版本也没关系,把上面的proguard.cfg文件复制一份放到项目中,然后进行相同的操作即可。

(0)

相关推荐

  • android apk如何防反编译/二次打包/防破解攻击

    Android apk很容易被反编译和破解,为大家介绍两种防android apk反编译的方法来提高APP安全性. 代码混淆 01 代码混淆是将程序的代码转换成一种功能上等价,但是难于阅读和理解的形式 ...

  • APK+Dex文件反编译及回编译工具(APKDB)安装经验

    APKDB是一款,针对Android OS系统的APK程序,直接反编译修改的工具.其实,本工具是一个工具集合箱,直接在[鼠标右键]创建快捷菜单:非常方便汉化工作者,对APK或Dex文件进行简易的反编译 ...

  • Android apk反编译基础(apktoos)图文教程

    很久有写过一个广工图书馆主页一个类爬虫的demo(因为没接口,只能扒取静态网页),实现一些图书馆系统的一些功能。但最近发现图书馆系统在html页面上做了手脚,一页html页面中嵌入了几千行的注释,并有 ...

  • apk反编译工具(android逆向助手) 的用处

    android逆向助手是针对安卓apk文件而开发的一款apk反编译工具,软件不光可以反编译apk文件,还支持重新打包apk.签名apk.反编译dex.重新打包dex.反汇编elf.反编译so.dex转 ...

  • Android APK反编译详解(附图)

    一.反编译Apk得到Java源代码 首先要下载两个工具:dex2jar和JD-GUI 前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源 ...

  • Android APK 反编译方法

    介绍Android APK 反编译方法,需要的工具的具体用法 操作方法 01 首先下载这三个软件,网上有很多资源,这里就不附加下载链接了 然后解压(注意apktool的两个文件解压到一个文件夹). 0 ...

  • APK包的一些修改心得apk反编译

    最近一直在弄apk,还买了一本书,感觉学习起来很吃力,还是想通过修改反编译一些apk来的快,来的省事.希望本文能对各位美化新手有所帮助. 一.单纯修改apk中未加密资源 01 什么资源没有加密?非re ...

  • apk反编译之有效防止破解和反编译加密方法

    对于Android开发者来说,自己开发的Android APP被破解是个让人头疼的事.那有什么办法能防止Android apk反编译和破解呢?一般的混淆代码和防二次打包还有效么?我们通过下面的内容来验 ...

  • apk反编译工具使用方法 快速反编译安卓apk软件

    学习安卓开发经常需要分析别人的apk,通过了解别人怎么编写的代码从而快速提高自己的编程水平,所以就需要用到apk反编译软件将别人的apk文件反编译出来,这样就可以查看其代码了.反编译是一种程序逆向编译 ...