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

2016-02-19 10:58 6 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文件复制一份放到项目中,然后进行相同的操作即可

来源:http://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朋友们有没有曾经不小心强删了自己非常喜欢的软件呢?通过设置就可以避免了,点击设置-通用-访问限制,将删除应用程序的功能关闭,这样就可以不用担心误删程序了。赶快试试吧!下面为详细教程。 第一步:滑动滑块解锁后点击【设置】进入设置界面,然后点击【通用】。 ...
iPhone如何防止被追踪? iPhone的定位追踪功能从3GS版本就开始得到应用,尤其是跟导航软件、LBS类应用相配合,无认是自驾导航,还是寻找身边的餐馆打折影院 KTV娱乐,甚至发微博聊QQ也都能结合地理位置让你找到身边的更多朋友。不过在某些情况下,如果你不想暴露自己的地理位置,那还真要学上两招。下面苹果园图老师小编将为您提供iPhone...
眼镜脏了千万别上来就擦 大致可以将镜片脏了原因分为两类: 1)油脂、汗迹或指纹等产生的:这种可以直接用干镜的眼镜布、湿巾进行擦拭清洁; 2)粘染灰尘等产生的:要先用水洗的方式将镜面的灰尘颗粒冲洗掉,这种不可以直接用眼镜布、湿巾进行擦拭,否则非常容易产生擦纹,将镜面刮花 尽量先用水洗再清洁 尽管上面的分类...
标签: wifi
进浏览器 打开浏览器,在地址栏输入你的路由器的地址,路由器默认地址是192.168.1.1,很多人安装了路由器就不修改地址,所以我们经常蹭网的就可以直接放完它的路由器进行设置,这是多么危险呀。一会我们就要修改这个地址。 输入帐户 弹出了对话框让我们输入账户和密码,默认的账户和密码都是admin。点击确定即可。 ...

经验教程

83

收藏

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