`
iaiai
  • 浏览: 2196964 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 代码混淆proguard技术介绍

 
阅读更多
由于各种反编译工具的泛滥,作为Android程序员在2.3版本以前只能通过手动添加proguard来实现代码混淆

proguard这个工具是一个java代码混淆的工具

在2.3版本的sdk中 我们可以看到在android-sdk-windows/tools/下面多了一个proguard文件夹
google已经把proguard技术放在了android sdk里面 可以通过正常的编译方式也能实现代码混淆了

可以看见新建一个工程里面有default.properties和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.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中的例子及注释。)

接下来 按照google帮助文档里说的
引用
To enable ProGuard so that it runs as part of an Ant or Eclipse build, set the proguard.config property in the <project_root>/default.properties file. The path can be an absolute path or a path relative to the project's root.

所以我们修改default.properties file
加上一句
proguard.config=proguard.cfg
如下
# 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

然后正常的编译签名即可

然后用Android Tools生成一个发布的apk即可

然后用反编译工具查看dex文件
最后导出反编译之后的混淆代码如下图

是不是很轻松加愉快!希望各位程序员都能保护好自己的Android代码!
  • 大小: 14.8 KB
  • 大小: 60.2 KB
  • 大小: 22.2 KB
分享到:
评论

相关推荐

    Android 2_3 代码混淆proguard技术介绍 - Zy的技术心

    Android 2_3 代码混淆proguard技术介绍 - Zy的技术心

    Android代码混淆 proguard语法及常用

    新写的proguard代码混淆的文档 大家可以看看

    Android 4.0及以上版本 ProGuard 代码混淆

    ### Android 4.0 及以上版本 ProGuard 代码混淆详解 #### 一、ProGuard 简介 ProGuard 是一款广泛应用于 Android 开发中的代码混淆工具,它能够通过删除未使用的类、字段、方法等,从而缩小 APK 的体积,并提高...

    java 代码混淆 proguard

    Java代码混淆是保护软件知识产权的重要手段,特别是在开源或者发布商业应用时,为了防止恶意用户反编译源码,理解并篡改程序逻辑,开发者通常会采用代码混淆技术。ProGuard是一款广泛使用的Java代码混淆工具,它能...

    java代码混淆器proGuard

    - 对于Android应用,ProGuard是默认的代码混淆工具,防止恶意用户分析和篡改代码。 - 对于服务器端的Java应用,混淆可以增强代码的保密性,减少知识产权泄露的风险。 - 对于开源项目,混淆可以保护作者的劳动成果...

    java 代码混淆 proguard5.3.3

    Java代码混淆是保护Java应用程序源代码安全的一种技术,主要目的是为了增加反编译的难度,降低代码被恶意篡改或分析的可能性。ProGuard是一款非常流行的开源混淆工具,它支持Java字节码处理,包括优化、压缩、混淆和...

    最好用的JAVA代码混淆工具proguard-7.0.0.zip

    Java代码混淆工具ProGuard是Java开发者在发布应用时常常使用的一种工具,它的主要目的是保护代码知识产权,防止未经授权的反编译和抄袭。在本压缩包文件"proguard-7.0.0.zip"中,包含了ProGuard的最新版本7.0.0,这...

    如何混淆Android项目代码(ProGuard)防止反编译.rar

    为了对抗这种威胁,开发者通常会采用代码混淆技术,其中ProGuard是Android官方推荐的混淆工具。本教程将深入探讨如何使用ProGuard来混淆Android项目代码,以防止反编译。 一、ProGuard介绍 ProGuard是一款免费的...

    Android Java代码混淆工具:ProGuard简介及使用.docx

    ### Android Java代码混淆工具:ProGuard的深度解析与实践 #### 概述 在软件开发领域,代码混淆是一项重要的安全措施,特别是在移动应用开发中,它能够保护源代码不被轻易逆向工程,从而增强应用的安全性。在...

    ProGuard工具包,Java代码混淆

    ProGuard是Android和Java平台上的一个强大的开源工具,它能实现代码混淆、优化、压缩以及预校验等功能。本文将深入探讨ProGuard的工作原理、配置与应用。 ### 1. ProGuard概述 ProGuard是一款免费的Java字节码混淆...

    Android代码混淆前后分析

    本文将深入探讨Android代码混淆的前因后果、原理以及如何实施。 首先,我们来理解什么是代码混淆。代码混淆是将源代码转换成一种难以理解和阅读的形式,通常通过重命名变量、方法和类名,以及压缩和优化代码结构来...

    Android混淆 各个版本proguard文件

    从Android Gradle插件3.4.0版本开始,R8成为默认的代码混淆工具,它是Google推出的下一代代码混淆工具,比Proguard更快更强大,同时兼容Proguard的配置文件。 6. **混淆与 DexGuard:** DexGuard是Eclipse ADT...

    Android代码-proguard-tips

    **Android代码混淆与Proguard详解** 在Android应用开发中,为了保护代码安全、减小APK体积以及提高运行效率,开发者通常会使用代码混淆工具,其中最常用的便是Proguard。Proguard是一个强大的Java字节码混淆、优化...

    Android代码混淆配置

    本篇文章将深入探讨Android代码混淆配置的细节,帮助开发者理解如何有效地使用这一技术。 混淆是通过重命名类、方法和变量,使得原始代码变得难以理解的过程。在Android中,我们通常使用ProGuard工具进行代码混淆,...

    介绍了Android代码混淆的三种方法及可能出现的问题

    下面将介绍三种常见的 Android 代码混淆方法。 一、使用 jocky 工具进行混淆 jocky 是一个编译级别的混淆工具,是在把.java 文件编译为.class 文件的过程中执行混淆,然后再把混淆后的.class 文件导出为 jar。...

    android 代码混淆_v2.0

    通过对上述内容的学习,我们可以了解到Android代码混淆是一项重要的技术手段,不仅能够保护代码安全,还能有效减小程序体积。开发者应该根据实际需求合理配置混淆规则,并注意混淆可能带来的负面影响。希望本文能...

    代码混淆工具-proguard7.2.2

    代码混淆工具ProGuard是Java平台上的一个强大工具,主要用于优化、缩小和混淆Java字节码。在Android开发中,它通常被用来保护应用程序的源代码,防止未经授权的反编译和逆向工程。ProGuard 7.2.2是该工具的一个版本...

    proguard,代码混淆

    在Java和Android开发中,代码混淆是一个至关重要的环节,它能够保护应用程序的源代码,防止未经授权的逆向工程。ProGuard是一款功能强大的开源混淆工具,由Eric Lafortune开发,它不仅提供代码混淆功能,还包含了...

    Android代码混淆及签名.doc

    "Android代码混淆及签名" Android 代码混淆是指对 Android 应用程序的源代码进行混淆处理,以防止别人反编译和盗取源代码。代码混淆可以使得反编译变得困难,但是不能完全阻止反编译。 Android 代码混淆可以通过...

    Java代码混淆工具(proguard4.5.1)

    Java代码混淆工具ProGuard是Java开发中用于保护和优化应用程序的重要工具。它的主要功能是对Java字节码进行混淆、优化、缩小和预校验,从而提高应用的安全性和性能。ProGuard 4.5.1是该工具的一个版本,发布于2010年...

Global site tag (gtag.js) - Google Analytics