从SDK2.3开始我们可以看到在android-sdk-windows/tools/下面多了一个proguard文件夹,proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护代码的作用。
下面具体说一说怎么样让SDK2.3下的proguard.cfg文件起作用,先来看看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 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
大功告成,正常的编译签名后就可以防止代码被反编译了。
如果您使用的是2.3之前的SDK版本也没关系,把上面的proguard.cfg文件复制一份放到项目中,然后进行相同的操作即可。
----------
from:
http://www.maxhis.info/androiding/protect-apk-from-decompile/
分享到:
相关推荐
本文将深入探讨两种防止Android应用被反编译的策略:代码混淆和使用安全工具。 首先,我们来了解一下什么是代码混淆。代码混淆是一种通过改变代码的可读性来增加其复杂性的技术,主要是通过对变量名、函数名和类名...
在防止Android应用被反编译方面,开发者可以采取以下措施: 1. 使用混淆工具:ProGuard或R8是Android官方推荐的混淆工具,它们可以随机化类名、方法名和变量名,使反编译后的代码难以理解。 2. 加密敏感代码:对...
#### 三、Android应用反编译的重要性 1. **学习和参考**:通过反编译可以了解其他开发者的编程技巧和设计思路,帮助提升自身的开发能力。 2. **安全分析**:反编译可以用来检测应用中存在的安全漏洞或恶意行为,有助...
【Android应用的反编译】是指利用特定工具和技术对Android应用程序进行逆向工程,以获取其源代码、设计思想、算法、数据结构等信息的过程。这种方法对于开发者来说,可以借鉴他人的设计经验,提高自己的开发效率,...
里面包含了一个反编译工具,一个查看反编译后的文件工具,一个详细说明文档,可以将一个android的apk文件反编译后查看作者的原代码,由于在代码打包成apk时的编译经过了处理,反编译后的代码不可能恢复到原来的代码...
此外,理解Android应用程序的生命周期、组件模型以及Dalvik虚拟机的工作原理,将有助于更有效地进行反编译工作。 需要注意的是,反编译可能涉及到法律问题,仅应在合法和授权的情况下进行。对于个人学习、研究和...
【AndroidKiller修复反编译源码卡死】这一主题主要涉及的是在使用AndroidKiller工具进行Android应用逆向工程时遇到的问题以及解决方案。AndroidKiller是一款常用的Android应用分析工具,它可以帮助开发者或安全研究...
1. **反编译过程**:在Android应用反编译中,常见的工具有Apktool、dex2jar和JD-GUI等。这些工具通常需要在命令行环境下执行,而这款可视化工具集成了这些功能,允许用户只需点击几下鼠标就能完成反编译。这包括解析...
这些工具可以帮助开发者、安全研究人员或者逆向工程师理解已编译的Android应用程序的工作原理。下面我们将详细探讨一些常用的Android反编译工具及其应用。 1. **Apktool**:Apktool是最常见的Android反编译工具之一...
了解如何反编译XML文件,有助于开发者更好地理解和调试Android应用,但同时也提醒我们在开发过程中应加强代码保护,避免敏感信息泄露。在实际工作中,我们可以利用混淆工具(如ProGuard)来保护APK,降低被反编译的...
标题为“Android反编译工具”的压缩包包含了一系列用于Android应用反编译的实用工具。下面将详细介绍这些工具以及反编译过程中的相关知识点。 首先,Android反编译工具.exe和Android反编译工具(64位).exe是两个可...
然而,由于Android应用的开放性,APK文件实际上可以被反编译,从而暴露源代码和敏感信息。本教程将围绕"android安卓app反编译apk反编译教程"这一主题,详细讲解如何进行APK反编译,以及涉及到的相关知识点。 首先,...
在Android应用开发中,"android反编译资源获取"是一个重要的技术话题,它涉及到对APK文件的逆向工程,以便获取其中的资源文件,如图片、布局文件等。APKTool是这个过程中常用的一款工具,它允许开发者解包、反编译、...
首先,`Apktool` 是一个强大的Android应用反编译工具,由Ivan Kuckir开发。它能够解包APK文件,将其资源文件如XML布局、图片等提取出来,并且可以重新打包和签名,使得开发者可以对APK进行修改。使用Apktool,你可以...
Android应用程序反编译套件,提供常见的android反编译软件
2. **DEX到JAVA**:DEX文件是Android应用的执行代码,需要通过反编译工具如dex2jar将其转换为JAR文件,然后再使用Java字节码反编译器(如JD-GUI或JAD)将JAR文件反编译成可读的Java源代码。 3. **资源解析**:APK中...
Android应用通常是以APK(Android Package)的形式发布,它包含了应用程序的字节码(Dalvik Executable,DEX)、资源文件、XML配置等。反编译就是将这些编译后的二进制文件还原成人类可读的源代码和资源文件,这有助...
在Android应用反编译过程中,jd-gui可以帮助我们查看APK中的Dalvik字节码(dex文件)对应的Java源代码,虽然可能无法完全恢复原始源代码,但能提供大致的逻辑和功能实现。 3. **dex2jar**:此工具用于将APK中的.dex...