Notice:其实这只是扰码而已,让反编译者看code的时候困难一些。
作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来。
Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了一个proguard文件夹
proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护代码的作用。
下面具体说一说怎么样让SDK2.3下的proguard.cfg文件起作用,先来看看android-sdk-windows\tools\lib\proguard.cfg的内容:
-
-optimizationpasses5
-
-dontusemixedcaseclassnames
-
-dontskipnonpubliclibraryclasses
-
-dontpreverify
-
-verbose
-
-optimizations!code/simplification/arithmetic,!field/*,!class/merging/*
-
-
-keeppublicclass*extendsandroid.app.Activity
-
-keeppublicclass*extendsandroid.app.Application
-
-keeppublicclass*extendsandroid.app.Service
-
-keeppublicclass*extendsandroid.content.BroadcastReceiver
-
-keeppublicclass*extendsandroid.content.ContentProvider
-
-keeppublicclass*extendsandroid.app.backup.BackupAgentHelper
-
-keeppublicclass*extendsandroid.preference.Preference
-
-keeppublicclasscom.android.vending.licensing.ILicensingService
-
-
-keepclasseswithmembernamesclass*{
-
native<methods>;
-
}
-
-
-keepclasseswithmembernamesclass*{
-
public<init>(android.content.Context,android.util.AttributeSet);
-
}
-
-
-keepclasseswithmembernamesclass*{
-
public<init>(android.content.Context,android.util.AttributeSet,int);
-
}
-
-
-keepclassmembersenum*{
-
publicstatic**[]values();
-
publicstatic**valueOf(java.lang.String);
-
}
-
-
-keepclass*implementsandroid.os.Parcelable{
-
publicstaticfinalandroid.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文件应该如下:
-
#ThisfileisautomaticallygeneratedbyAndroidTools.
-
#Donotmodifythisfile--YOURCHANGESWILLBEERASED!
-
#
-
#ThisfilemustbecheckedinVersionControlSystems.
-
#
-
#TocustomizepropertiesusedbytheAntbuildsystemuse,
-
#"build.properties",andoverridevaluestoadaptthescripttoyour
-
#projectstructure.
-
-
#Projecttarget.
-
target=android-9
-
proguard.config=proguard.cfg
大功告成,正常的编译签名后就可以防止代码被反编译了。反编译经过代码混淆的apk得到的代码应该类似于下面的效果,是很难看懂的:
如果您使用的是2.3之前的SDK版本也没关系,把上面的proguard.cfg文件复制一份放到项目中,然后进行相同的操作即可
引自:http://blog.csdn.net/sunboy_2050/article/details/6727640
分享到:
相关推荐
Android APK 反编译之有效防止破解和反编译加密方法 Android APK 反编译是一种常见的安全威胁,许多 Android 开发者都存在这个问题。那麼有什么办法能防止 Android APK 反编译和破解呢?本文将对 Android APK 反...
Android 防止 APK 反编译教程 Android 应用开发者不可避免地面临一个尴尬的局面,即自己辛辛苦苦开发的应用可以被别人轻易地反编译出来。为了解决这个问题,Google 从 SDK 2.3 开始引入了 ProGuard 工具,通过混淆 ...
在Android开发领域,APK反编译是一种常见的技术手段,用于理解APK应用程序的工作原理、逆向工程或安全分析。本文将深入探讨Android APK反编译工具及其应用。 首先,我们要明白什么是APK。APK是Android应用程序的...
"Android APK反编译"是一个针对APK文件进行逆向工程的过程,旨在揭示其内部工作原理,理解代码逻辑,或者进行二次开发。这个过程通常用于安全分析、漏洞挖掘、学习和调试。下面我们将深入探讨APK反编译的相关知识点...
本文将深入探讨“Android APK反编译文件”这一主题,包括如何进行反编译,以及反编译过程中的关键知识点。 首先,让我们了解什么是APK反编译。APK反编译是将已编译的APK文件转换回其源代码形式,以便分析和理解其...
有时候,为了分析或者学习其他应用的实现原理,开发者可能会使用到APK反编译工具。本篇文章将详细介绍如何使用"Apk 反编译成Java源代码工具"来获取APK中的源码。 首先,我们需要了解反编译的基本概念。反编译是将已...
下面将详细阐述Android APK反编译的相关知识点。 1. **APK结构**:APK文件包含Dex文件(Dalvik Executable),它是Android平台上的字节码格式;资源文件夹(res/)包含了应用的所有UI元素、字符串和图形;Manifest....
本文将深入探讨Android APK反编译的原理、工具和相关知识点。 首先,我们需要理解APK文件的结构。APK包含资源文件(如图片、布局XML)、Java字节码(Dalvik Executable, .dex文件)、AndroidManifest.xml(应用配置...
APK反编译工具是Android应用开发者和安全研究人员常用的工具,用于查看、分析甚至修改APK文件的内容。APK文件是Android系统中的应用程序打包格式,它包含了应用的代码、资源、图片、XML配置等所有组成部分。通过反...
APK反编译是Android应用开发领域中的一个重要概念,它涉及到对Android应用程序的源代码进行逆向工程,以便查看、修改或分析其内部工作原理。这个过程通常由开发者、安全研究人员或者热衷于学习他人代码的程序员进行...
总的来说,"apk反编译工具"是Android开发者的重要辅助工具,它能帮助我们理解和修改APK的内容,但也需要我们在使用时遵守相关法规,尊重他人的知识产权。通过熟练掌握Apktool和JD-GUI等工具,开发者可以提升自己的...
总的来说,"Android反编译三件套"是Android开发者和安全研究人员的重要工具集,它们可以帮助我们洞察APK的内部结构,加深对Android应用运行机制的理解,同时也为修复bug、优化性能、防止恶意行为提供了可能。...
总之,Android APK反编译工具是Android开发和安全领域的重要辅助工具,它提供了一种深入洞察APK内部机制的途径,有助于学习、调试、优化和保护Android应用。然而,合理使用这些工具至关重要,遵守相关法律法规,尊重...
apktool是一个强大的APK反编译工具,它不仅可以提取出Java源代码,还可以解析出XML配置文件、资源文件(如图片和字符串资源)等。首先,下载apktool并将其解压,然后在命令行中定位到apktool的目录。使用命令`...
在Android应用开发中,保护APK...总之,防止APK反编译是一个综合性的过程,涉及到代码混淆、资源加密、安全编码实践等多个方面。持续关注安全更新,及时调整和增强防护措施,是保护Android应用免受逆向工程攻击的关键。
其中,APK反编译是安全领域的一个关键话题,因为恶意攻击者可以通过反编译获取到应用的源代码,从而分析其逻辑、窃取数据或植入恶意代码。本文将详细介绍使用Apktool这一工具进行APK反编译的过程,以及相关的安全...
本篇文章将详细探讨Android APK反编译的过程、常用工具以及其在不同场景下的应用。 首先,我们来了解一下APK文件。APK是Android应用程序的打包格式,包含了应用的所有资源、代码、证书和清单文件。为了能够查看或...
Android APK反编译工具是开发人员和安全研究人员用于探索、分析和修改APK应用程序的工具。这些工具允许用户查看原始的Java源代码,资源文件,以及应用的XML配置,这对于学习、调试或优化APK文件非常有用。下面将详细...
APK反编译是Android应用开发中的一个重要环节,主要用于查看、分析或修改应用程序的源代码、资源文件等。这个集合表明包含了一个名为"jd-gui-windows-1.4.0"的工具,这是一个用于Java字节码反汇编的图形界面工具,...