Android APK程序加密,防止被别人反编译

简介:

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

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

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

下面具体说一说怎么样让SDK2.3下的proguard.cfg文件起作用,先来看看android-sdk-windowstoolslibproguard.cfg的内容:

[html] view plaincopyprint?

-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变量名及类名,所有类中部分以设定了固定参数格式的构造函数,枚举等等。(详细信息请参考/examples中的例子及注释。)

让proguard.cfg起作用的做法很简单,就是在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”就可以了

完整的default.properties文件应该如下:

[html] view plaincopyprint?

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得到的代码应该类似于下面的效果,是很难看懂的:

本文转自博客园知识天地的博客,原文链接:Android APK程序加密,防止被别人反编译 需转载请自行联系原博主。

相关文章
|
1月前
|
设计模式 算法 前端开发
Android面经分享,失业两个月,五一节前拿到Offer,设计思想与代码质量优化+程序性能优化+开发效率优化
Android面经分享,失业两个月,五一节前拿到Offer,设计思想与代码质量优化+程序性能优化+开发效率优化
|
25天前
|
安全 Java Android开发
05. 【Android教程】Android 程序签名打包
05. 【Android教程】Android 程序签名打包
18 1
|
21小时前
|
Java Android开发
程序与技术分享:Android使用Dagger注入的方式初始化对象的简单使用
程序与技术分享:Android使用Dagger注入的方式初始化对象的简单使用
|
23小时前
|
安全 网络协议 网络安全
程序与技术分享:Android应用安全之数据传输安全
程序与技术分享:Android应用安全之数据传输安全
|
1月前
|
XML Java Android开发
如何美化android程序:自定义ListView背景
如何美化android程序:自定义ListView背景
13 2
|
1月前
|
Ubuntu Java Shell
反编译apk文件,得到其源代码的方法!!
反编译apk文件,得到其源代码的方法!!
37 1
|
1月前
|
Android开发
Android修改默认system/bin/下可执行程序拥有者和权限,使用实例,只有root和系统app权限才能执行某个命令。
Android修改默认system/bin/下可执行程序拥有者和权限,使用实例,只有root和系统app权限才能执行某个命令。 【5月更文挑战第2天】
38 0
|
2天前
|
安全 算法 网络安全
数字堡垒之下:网络安全漏洞、加密技术与安全意识的三重奏
【6月更文挑战第25天】在数字化时代的交响乐中,网络安全扮演着不可或缺的角色。本文将深入探讨网络安全的三大支柱:网络漏洞的存在与影响、加密技术的演进与应用以及安全意识的培养与实践。通过分析这些关键要素,我们旨在为读者提供一套维护网络安全的实用指南,确保个人和组织在信息海洋中航行的安全。
|
3天前
|
SQL 存储 安全
网络安全与信息安全:漏洞、加密与意识的三重防线
在数字时代的浪潮中,网络安全与信息安全的重要性日益凸显。本文将深入探讨网络安全中的漏洞问题,介绍加密技术的最新进展,并强调安全意识在防护体系中的核心作用。通过分析近期的安全事件案例,揭示网络威胁的演变趋势,并提供实用的防御策略,旨在为读者构建一个多层次、全方位的安全防护框架。
|
3天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:漏洞、加密与意识
当今社会,网络安全和信息安全已经成为人们关注的焦点。本文从网络安全漏洞、加密技术和安全意识三个方面展开探讨,旨在帮助读者更好地了解和应对网络安全挑战,提高自身信息安全意识和防范能力。