`

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

阅读更多

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

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

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

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

01 -optimizationpasses 5
02 -dontusemixedcaseclassnames
03 -dontskipnonpubliclibraryclasses
04 -dontpreverify
05 -verbose
06 -optimizations !code/simplification/arithmetic,!field/*,! class /merging/*
07  
08 -keep public class * extends android.app.Activity
09 -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 }

从脚本中可以看到,混淆中保留了继承自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 文件应该如下:

01 # This file is automatically generated by Android Tools.
02 # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
03 #
04 # This file must be checked in Version Control Systems.
05 #
06 # To customize properties used by the Ant build system use,
07 # "build.properties" , and override values to adapt the script to your
08 # project structure.
09  
10 # Project target.
11 target=android- 9
12 proguard.config=proguard.cfg

大功告成,正常的编译签名后就可以防止代码被反编译了。反编译经过代码混淆的apk得到的代码应该类似于下面的效果,是很难看懂的:

如果您使用的是2.3之前的SDK版本也没关系,把上面的proguard.cfg文件复制一份放到项目中,然后进行相同的操作即可

原文出处:http://blog.csdn.net/sunboy_2050/article/details/6727640

分享到:
评论

相关推荐

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

    Android 防止 APK 反编译教程 Android 应用开发者不可避免地面临一个尴尬的局面,即自己辛辛苦苦开发的应用可以被别人轻易地反编译出来。为了解决这个问题,Google 从 SDK 2.3 开始引入了 ProGuard 工具,通过混淆 ...

    Android APK反编译工具反编译工具包

    这个“Android APK反编译工具反编译工具包”就是为了这些目的而准备的。它包含了三个核心工具:apktool、dex2jar和jd-gui,这些都是Android反编译流程中的关键组件。 首先,`apktool`是一个开源工具,用于解包和...

    androidAPK反编译工具32/64

    总的来说,"androidAPK反编译工具32/64"是一个方便开发者和安全专家研究APK内部结构的实用工具,通过它可以深入了解应用程序的工作原理,同时也提醒我们尊重他人的知识产权。在进行任何反编译操作时,应确保遵循合法...

    Android-DecompileApk-一键反编译APK

    "Android-DecompileApk-一键反编译APK"项目提供了一种便捷的方式,帮助开发者或者安全研究人员快速地对APK文件进行反编译,以查看其源代码和资源。下面我们将详细探讨这个过程及相关知识点。 1. **APK 文件结构**:...

    android反编译工具

    8. **Androguard**:Androguard是一个开源的Android安全分析框架,可以用来分析APK文件,包括反编译DEX文件,提取类、方法和权限信息,还可以进行动态分析。 9. **Frida**:虽然主要是一个动态代码插桩工具,Frida...

    android的apk反编译

    ### Android APK反编译知识点详解 #### 一、概述 Android平台因其开源性与灵活性而备受开发者喜爱。但在实际使用过程中,用户可能会遇到各种各样的问题,比如软件中烦人的广告或者游戏中的某些设定(如经验金币获取...

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

    作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来,天下痛苦之事莫过于此啊,本文会介绍一种防止apk程序被反编译的方法,感兴趣的朋友可以了解下哦

    android_apk反编译工具

    本文将详细介绍如何使用"android_apk反编译工具",包括dex2jar和JD-GUI,来查看APK的源代码。 首先,我们需要理解APK文件的结构。一个APK文件主要包括DEX(Dalvik Executable)文件,这是Java字节码在Android系统中...

    Android反编译软件 安卓反编译 Android APK反编译详解

    在Android开发领域,有时我们需要对APK文件进行反编译以了解其内部结构、源代码逻辑或进行二次开发。本文将深入探讨Android反编译的相关知识,包括为什么要进行反编译,常用工具介绍,以及反编译过程的详细步骤。 ...

    APK一键反编译工具

    APK一键反编译工具是针对Android应用程序的逆向工程工具,它允许用户轻松地将APK文件解包并查看其内部结构。这个工具对于开发者、安全研究人员或想要修改APK应用的人来说非常有用,因为它提供了深入理解APK内部工作...

    Android Apk一键反编译 (支持Mac 和 Windows)

    "Android Apk一键反编译 (支持Mac 和 Windows)"是一个专为这一需求设计的工具,它简化了在不同操作系统上的反编译过程。 该工具的核心功能是提供了一键式的反编译体验,意味着用户无需进行复杂的命令行操作或手动...

    android反编译,apk反编译步骤及工具

    在Android开发领域,有时我们需要对APK文件进行反编译以了解其内部结构、查看源代码或进行二次开发。本文将详细介绍如何进行Android反编译,以及常用的反编译工具和步骤。 首先,理解APK文件的本质是Android应用...

    apk和jar反编译工具

    本文将详细讨论“apk和jar反编译工具”,并解释这些工具如何帮助开发者和研究人员理解Android应用程序(APK)和Java类库(JAR)的工作原理。 首先,让我们了解一下标题中的关键词:“apk反编译”和“jar反编译”。...

    apk反编译工具下载

    这是一款强大的APK反编译和打包工具,可以解压APK,展示资源文件(如图片、布局、字符串表等),反编译.smali文件(Dalvik汇编语言),并允许重新打包和签名,以便修改后的APK可以再次安装到Android设备上。...

    Android反编译APK查看

    在Android开发领域,有时我们需要对已有的APK应用进行反编译来查看其源代码、资源文件或了解其工作原理。这通常是出于学习、调试、安全分析或逆向工程的目的。本文将详细介绍如何使用名为JD-GUI的工具来实现Android ...

    Android-apk反编译工具

    在Android开发领域,APK反编译是一种常见的技术手段,用于理解APK应用程序的工作原理、逆向工程或安全分析。本文将深入探讨Android APK反编译工具及其应用。 首先,我们要明白什么是APK。APK是Android应用程序的...

    Android APK反编译文件

    - **安全风险**:反编译可能会暴露应用的敏感信息,如API密钥、服务器地址等,因此开发时应采取措施防止这些信息被轻易获取。 - **修复与打包**:完成分析后,如果需要重新打包APK,必须确保所有资源和文件按原样...

    android apk反编译工具集合

    本文将详细介绍四个常用的Android反编译工具:apktool、dex2jar、jdgui以及Smali2Java,它们在Android APK文件处理中的作用。 首先,我们来看`apktool`。Apktool是一款开源的Android APK反编译工具,由IzzySoft开发...

Global site tag (gtag.js) - Google Analytics