Android如何防止apk程序被反编译(尊重劳动成果)

2016-02-19 10:58 1 1 收藏

今天给大家分享的是由图老师小编精心为您推荐的Android如何防止apk程序被反编译(尊重劳动成果),喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

【 tulaoshi.com - 编程语言 】

作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来。

Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windowstools下面多了一proguard文件夹

proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护代码的作用。

下面具体说一说怎么样让SDK2.3下的proguard.cfg文件起作用,先来看看android-sdk-windowstoolslibproguard.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 * 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文件应该如下:
代码如下:

# 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

大功告成,正常的编译签名后就可以防止代码被反编译了。反编译经过代码混淆的apk得到的代码应该类似于下面的效果,是很难看懂的:
 
如果您使用的是2.3之前的SDK版本也没关系,把上面的proguard.cfg文件复制一份放到项目中,然后进行相同的操作即可

来源:https://www.tulaoshi.com/n/20160219/1596243.html

延伸阅读
标签: flash教程
Action Script Viewer 4.0可以分析Flash文件(.swf)文件的内部结构,并将其中的动作脚本(actionscripts)分解出来,软件支持Flash4、Flash5、Flash MX和Flash MX2004制作的swf文件,分解出的动作脚本可以保存为文本格式,在编辑过程中可以随时对Flash文件进行预览,是一个不可多得的好东东! 官方主页: http://buraks.com/ ...
如何防止iPhone手机内的应用程序被误删 iPTulaoshi.comhone朋友们有没有曾经不小心强删了自己非常喜欢的软件呢?通过设置就可以避免了,点击设置-通用-访问限制,将删除应用程序的功能关闭,这样就可以不用担心误删程序了。赶快试试吧!下面为详细教程。 第一步:滑动滑块解锁后点击【设置】进入设置界面,然后点击【通用】。 ...
标签: Web开发
一、ZendEncode的工作原理 使用PHP的人都知道,它是一个脚本编程工具,由它写的程序,必须以源码的形式放置在Web服务器上,所以我们无法保护自己的源代码。而且各位都知道任何一个脚本程序的执行效率同具有相同功能的编译好的二进制代码相比较,它的执行效率都是比较慢的。那么要是有一个工具能够帮我们把用php写的程序编译成二进制代...
iPhone如何防止被追踪? iPhone的定位追踪功能从3GS版本就开始得到应用,尤其是跟导航软件、LBS类应用相配合,无认是自驾导航,还是寻找身边的餐馆打折影院 KTV娱乐,甚至发微博聊QQ也都能结合地理位置让你找到身边的更多朋友。不过在某些情况下,如果你不想暴露自己的地理位置,那还真要学上两招。下面苹果园图老师小编将为您提供iPhone...
微软的 .Net 平台还未出师就遭遇尴尬。 一个针对软件巨人踌躇满志的下一代操作系统的反编译产品,第一个C GBP反编译器已经出台。 这对相信.Net平台的人来说是一个沉重的打击。 美国安全产品销售商,BitArts公司的CTO ,前黑客,John Safa说:“解密组织现在写出了一个C GBP的反编译器,能解开应用程序代码,如果你在网络...

经验教程

364

收藏

87
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部