`
hanyi366
  • 浏览: 290417 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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的内容:

 

-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>;
}
 

 
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}
 
-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}
-libraryjars /libs/android-support-v4.jar  
-dontwarn android.support.v4.**  
-keep class android.support.v4.** { *; }  
-keep public class * extends android.support.v4.**  
-keep public class * extends android.app.Fragment  

-libraryjars /libs/android-support-v4.jar  
-dontwarn android.support.v4.**  
-keep class android.support.v4.** { *; }  
-keep public class * extends android.support.v4.**  
-keep public class * extends android.app.Fragment  

-libraryjars /libs/commons-codec-1.7.jar  
-dontwarn org.apache.commons.codec.**  
-keep class org.apache.commons.codec.** { *; }  
-keep public class * extends org.apache.commons.codec.**  
-keep public class * extends android.app.Fragment  

-libraryjars /libs/baidumapapi.jar  
-dontwarn com.baidu.mapapi.**  
-keep class com.baidu.mapapi.** { *; }  
-keep public class * extends com.baidu.mapapi.**  
-keep public class * extends android.app.Fragment  

 从脚本中可以看到,混淆中保留了继承自Activity、Service、Application、BroadcastReceiver、 ContentProvider等基本组件以及com.android.vending.licensing.ILicensingService,

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

最后如果发现有如下错误You may need to specify additional library jars (using '-libraryjars')。

这说明程序有引入第三方jar包,这样的话就的增加如下几句话:

 

-libraryjars /libs/android-support-v4.jar  
-dontwarn android.support.v4.**  
-keep class android.support.v4.** { *; }  
-keep public class * extends android.support.v4.**  
-keep public class * extends android.app.Fragment  

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

 

  • 大小: 30.2 KB
  • 大小: 37 KB
分享到:
评论

相关推荐

    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