`
hyongbai
  • 浏览: 15300 次
文章分类
社区版块
存档分类
最新评论

Android 防止apk反编译

 
阅读更多

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

  1. -optimizationpasses5
  2. -dontusemixedcaseclassnames
  3. -dontskipnonpubliclibraryclasses
  4. -dontpreverify
  5. -verbose
  6. -optimizations!code/simplification/arithmetic,!field/*,!class/merging/*
  7. -keeppublicclass*extendsandroid.app.Activity
  8. -keeppublicclass*extendsandroid.app.Application
  9. -keeppublicclass*extendsandroid.app.Service
  10. -keeppublicclass*extendsandroid.content.BroadcastReceiver
  11. -keeppublicclass*extendsandroid.content.ContentProvider
  12. -keeppublicclass*extendsandroid.app.backup.BackupAgentHelper
  13. -keeppublicclass*extendsandroid.preference.Preference
  14. -keeppublicclasscom.android.vending.licensing.ILicensingService
  15. -keepclasseswithmembernamesclass*{
  16. native<methods>;
  17. }
  18. -keepclasseswithmembernamesclass*{
  19. public<init>(android.content.Context,android.util.AttributeSet);
  20. }
  21. -keepclasseswithmembernamesclass*{
  22. public<init>(android.content.Context,android.util.AttributeSet,int);
  23. }
  24. -keepclassmembersenum*{
  25. publicstatic**[]values();
  26. publicstatic**valueOf(java.lang.String);
  27. }
  28. -keepclass*implementsandroid.os.Parcelable{
  29. publicstaticfinalandroid.os.Parcelable$Creator*;
  30. }

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

  1. #ThisfileisautomaticallygeneratedbyAndroidTools.
  2. #Donotmodifythisfile--YOURCHANGESWILLBEERASED!
  3. #
  4. #ThisfilemustbecheckedinVersionControlSystems.
  5. #
  6. #TocustomizepropertiesusedbytheAntbuildsystemuse,
  7. #"build.properties",andoverridevaluestoadaptthescripttoyour
  8. #projectstructure.
  9. #Projecttarget.
  10. target=android-9
  11. proguard.config=proguard.cfg

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


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

引自:http://blog.csdn.net/sunboy_2050/article/details/6727640

分享到:
评论

相关推荐

    Androidapk反编译之androidAPK有效加密方法.pdf

    Android APK 反编译之有效防止破解和反编译加密方法 Android APK 反编译是一种常见的安全威胁,许多 Android 开发者都存在这个问题。那麼有什么办法能防止 Android APK 反编译和破解呢?本文将对 Android APK 反...

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

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

    Android-apk反编译工具

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

    android apk反编译

    "Android APK反编译"是一个针对APK文件进行逆向工程的过程,旨在揭示其内部工作原理,理解代码逻辑,或者进行二次开发。这个过程通常用于安全分析、漏洞挖掘、学习和调试。下面我们将深入探讨APK反编译的相关知识点...

    Android APK反编译文件

    本文将深入探讨“Android APK反编译文件”这一主题,包括如何进行反编译,以及反编译过程中的关键知识点。 首先,让我们了解什么是APK反编译。APK反编译是将已编译的APK文件转换回其源代码形式,以便分析和理解其...

    Apk 反编译成Java源代码工具

    有时候,为了分析或者学习其他应用的实现原理,开发者可能会使用到APK反编译工具。本篇文章将详细介绍如何使用"Apk 反编译成Java源代码工具"来获取APK中的源码。 首先,我们需要了解反编译的基本概念。反编译是将已...

    Android apk反编译

    下面将详细阐述Android APK反编译的相关知识点。 1. **APK结构**:APK文件包含Dex文件(Dalvik Executable),它是Android平台上的字节码格式;资源文件夹(res/)包含了应用的所有UI元素、字符串和图形;Manifest....

    Android APK 反编译软件

    本文将深入探讨Android APK反编译的原理、工具和相关知识点。 首先,我们需要理解APK文件的结构。APK包含资源文件(如图片、布局XML)、Java字节码(Dalvik Executable, .dex文件)、AndroidManifest.xml(应用配置...

    APK反编译工具.

    APK反编译工具是Android应用开发者和安全研究人员常用的工具,用于查看、分析甚至修改APK文件的内容。APK文件是Android系统中的应用程序打包格式,它包含了应用的代码、资源、图片、XML配置等所有组成部分。通过反...

    apk反编译工具+傻瓜教程

    APK反编译是Android应用开发领域中的一个重要概念,它涉及到对Android应用程序的源代码进行逆向工程,以便查看、修改或分析其内部工作原理。这个过程通常由开发者、安全研究人员或者热衷于学习他人代码的程序员进行...

    apk反编译工具

    总的来说,"apk反编译工具"是Android开发者的重要辅助工具,它能帮助我们理解和修改APK的内容,但也需要我们在使用时遵守相关法规,尊重他人的知识产权。通过熟练掌握Apktool和JD-GUI等工具,开发者可以提升自己的...

    android apk反编译3件套.rar

    总的来说,"Android反编译三件套"是Android开发者和安全研究人员的重要工具集,它们可以帮助我们洞察APK的内部结构,加深对Android应用运行机制的理解,同时也为修复bug、优化性能、防止恶意行为提供了可能。...

    android apk 反编译工具

    总之,Android APK反编译工具是Android开发和安全领域的重要辅助工具,它提供了一种深入洞察APK内部机制的途径,有助于学习、调试、优化和保护Android应用。然而,合理使用这些工具至关重要,遵守相关法律法规,尊重...

    Android APK反编译详解(附图

    apktool是一个强大的APK反编译工具,它不仅可以提取出Java源代码,还可以解析出XML配置文件、资源文件(如图片和字符串资源)等。首先,下载apktool并将其解压,然后在命令行中定位到apktool的目录。使用命令`...

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

    在Android应用开发中,保护APK...总之,防止APK反编译是一个综合性的过程,涉及到代码混淆、资源加密、安全编码实践等多个方面。持续关注安全更新,及时调整和增强防护措施,是保护Android应用免受逆向工程攻击的关键。

    apktool apk反编译攻击

    其中,APK反编译是安全领域的一个关键话题,因为恶意攻击者可以通过反编译获取到应用的源代码,从而分析其逻辑、窃取数据或植入恶意代码。本文将详细介绍使用Apktool这一工具进行APK反编译的过程,以及相关的安全...

    android APK 反编译工具

    本篇文章将详细探讨Android APK反编译的过程、常用工具以及其在不同场景下的应用。 首先,我们来了解一下APK文件。APK是Android应用程序的打包格式,包含了应用的所有资源、代码、证书和清单文件。为了能够查看或...

    android apk反编译工具

    Android APK反编译工具是开发人员和安全研究人员用于探索、分析和修改APK应用程序的工具。这些工具允许用户查看原始的Java源代码,资源文件,以及应用的XML配置,这对于学习、调试或优化APK文件非常有用。下面将详细...

    apk反编译集合,自己测试了一天,可用。

    APK反编译是Android应用开发中的一个重要环节,主要用于查看、分析或修改应用程序的源代码、资源文件等。这个集合表明包含了一个名为"jd-gui-windows-1.4.0"的工具,这是一个用于Java字节码反汇编的图形界面工具,...

Global site tag (gtag.js) - Google Analytics