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

android apk 为程序增加代码混淆

阅读更多

概述

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

在2.3版本以后,无论开发用的是哪一个版本的SDK,新建一个工程里面都会有default.properties和proguard.cfg两个文件。(http://www.my400800.cn

 

proguard4.6.zip 下载

 

默认的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中的例子及注释。

使用代码混淆

依据官方文档所说:

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文件,加上一句:

proguard.config=proguard.cfg


加完后如下面的样子:

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

然后正常的编译签名即可生成一个经过代码混淆的apk。

 

 

如果编译出现警告可以在【proguard.cfg】文件中添加【-ignorewarnings】忽略警告项目进行混淆处理。

 

 

Eclipse+ADT进行Android应用程序的代码混淆和签名 图解

启动代码混淆功能

在较新版本的Android tools和ADT,项目工程里面是带有proguard.cfg的代码混淆配置文件,但默认是没有启动这个配置的,需要手动地在default.properties里面添加指定这个配置文件:
# Project target.
target=android-3
proguard.config=proguard.cfg
然后按F5刷新当前项目工程,这时候Eclipse检测了文件的变动而重新编译!

生成签名发布apk

1.Eclipse工程中右键工程,弹出选项中选择 android工具-生成签名应用包:


 

2.选择需要打包的android项目工程(注:这里会自动选择当前的Project的):


 

3.如果已有私钥文件,选择私钥文件 输入密码,如果没有私钥文件见 第6和7步创建私钥文件:


 

4.输入私钥别名和密码:


 

5.选择APK存储的位置,并完成设置 开始生成:


 

6.没有私钥文件的情况,创建私钥文件(注:这里私钥文件的Location位置最好自己选择一个新位置,便于牢记,而且最好把这个私钥文件备份到其他地方去以免丢失,因为应用程序的更新需要同一私钥文件):


 

7.输入私钥文件所需信息,并创建(注:这里的密码是用于Key的别名的,和上面的KeyStore文件的不同,这点可以看步骤3和4。另外下面的名字,开发者资料等是不需要全部填写的,dialog会有提示的):


 

这时候生成的apk,我发现是比debug版本的要小!如果你发现没有变小的话,请确认项目工程是重新编译的!但代码混淆的效果一般般,基本上还是可以看到原来的语句!

 

 

如果运行上面的代码出现错误请下载 proguard4.6.rar解压后把目录下面的 lib 目录中的文件复制到 【androidsdk的Developer目录下的lib目录下面就可以了】

 

 

  • 大小: 43.6 KB
  • 大小: 15.2 KB
  • 大小: 18.6 KB
  • 大小: 15.8 KB
  • 大小: 22 KB
  • 大小: 18.3 KB
  • 大小: 20.3 KB
分享到:
评论

相关推荐

    android apk代码混淆

    ### Android APK代码混淆详解 在Android开发过程中,为了保护源代码不被轻易反编译以及减少APK包的体积,通常会采用代码混淆技术。本文将详细介绍如何进行Android项目的代码混淆,并结合给定的配置文件内容,深入...

    Android代码混淆前后分析

    在Android开发过程中,为了保护应用的安全性和防止反编译,开发者常常会进行代码混淆这一重要步骤。本文将深入探讨Android代码混淆的前因后果、原理以及如何实施。 首先,我们来理解什么是代码混淆。代码混淆是将源...

    Android程序中(APK程序)执行Adb shell 命令

    综上所述,"Android程序中(APK程序)执行Adb shell命令"涉及到利用Java的Runtime或ProcessBuilder类来调用系统shell,执行特定的命令。这个过程需要理解ADB的作用,以及如何在Android应用程序中安全地使用shell命令...

    Android 反编译和代码混淆

    因此,了解并掌握Android的反编译和代码混淆技术对于保护应用的知识产权和用户数据至关重要。 **一、Android反编译** 1. ** Dex2Jar 和 JD-GUI**: Dex2Jar是一个将.dex文件转换为.jar文件的工具,而JD-GUI则是一个...

    Android APK 加密 解密工具

    "Android APK 加密 解密工具"就是这样一个专门用于加密和解密APK文件的实用程序,它可以帮助开发者增加额外的安全层,确保只有经过授权的用户能够安装和运行应用。 首先,我们需要理解APK加密的基本原理。通常,APK...

    android apk文件代码加密 源码

    Android 应用程序以APK(Android Package)的形式发布,它实际上是一个包含应用程序代码、资源、manifest文件等的ZIP压缩包。APK文件内部结构包括以下几个关键部分: 1. classes.dex:包含了Java字节码,通过Dalvik...

    Baffle, Android apk包res 资源混淆工具.zip

    Baffle的使用不仅限于基本的资源混淆,它还可以与其他安全实践结合,如代码混淆、资源加密等,进一步增强应用的安全性。通过开源的方式,开发者可以深入理解其内部机制,根据实际需求进行定制和改进。 总之,Baffle...

    android ndk+代码混淆demo

    在这个“android ndk+代码混淆demo”中,开发者提供了一个实际的项目,展示了如何结合Android NDK和代码混淆技术来创建一个应用。通过这个Demo,学习者可以了解如何在Android项目中集成NDK,以及如何配置和使用...

    android 代码混淆_v2.0

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

    安卓android apk 反编译步骤

    安卓Android APK反编译是开发者或逆向工程师为了查看、分析或修改APK内部代码和资源的一种技术。...同时,作为开发者,也应该了解如何保护自己的应用不被轻易反编译,例如使用ProGuard进行代码混淆,增加破解的难度。

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

    ProGuard 是一款广泛应用于 Android 开发中的代码混淆工具,它能够通过删除未使用的类、字段、方法等,从而缩小 APK 的体积,并提高应用运行速度。此外,ProGuard 还能为类、字段、方法等命名,使得反编译后的代码...

    Android APK反编译文件

    - **混淆与加密**:许多开发者会使用代码混淆工具(如ProGuard)对APK进行保护,这使得反编译后的代码难以理解。此外,一些敏感数据或逻辑可能经过加密处理,增加了反编译的难度。 - **安全风险**:反编译可能会...

    apk android签名加密混淆

    在Android应用开发中,APK签名、加密和混淆是三个重要的安全措施,它们确保了应用程序的完整性和安全性。本文将详细解析这些概念及其在实际应用中的作用。 **签名** APK签名是Android系统的一种安全机制,它用于...

    androidStudio代码混淆插件AndroidProguard

    Android Studio是一款广泛使用的Android应用程序开发集成环境,而代码混淆是其中的一个重要环节,尤其是在发布应用时,为了提高代码的安全性和减少体积,通常会使用到Proguard工具。AndroidProguard插件则是为...

    Android代码混淆及签名.doc

    "Android代码混淆及签名" ...代码混淆和签名打包 APK 是 Android 应用程序安全的重要组成部分。通过配置 proguard.cfg 文件和签名打包 APK,可以保护 Android 应用程序的源代码和intellectual property。

    vc 调用命令工具生成android apk文件

    在IT行业中,尤其是在移动应用开发领域,Android APK文件是应用程序的可执行文件,它包含了所有必要的资源、代码和运行应用所需的库。本教程将详细讲解如何利用Visual C++ 6.0(简称VC6.0)调用Android相关的命令行...

    android apk反编译

    在Android应用开发中,APK文件是应用程序的打包格式,包含了所有运行所需代码、资源和配置文件。"Android APK反编译"是一个针对APK文件进行逆向工程的过程,旨在揭示其内部工作原理,理解代码逻辑,或者进行二次开发...

    Android Apk脱壳工具及源代码

    在Android应用开发领域,Apk文件是应用程序的打包格式,其中包含了所有的代码、资源和元数据。有时,开发者或安全研究人员需要对Apk进行逆向工程,以理解其内部工作原理、查找潜在的安全漏洞或者进行二次开发。在这...

    androidAPK中文文档

    Android APK 是Android应用程序的主要包装格式,它包含了所有必要的文件,如代码、资源、图片和库,使得应用能在Android设备上运行。这份“Android APK中文文档”是官方文档的中文翻译版,为开发者提供了详细的指导...

    android apk反汇编的知识

    - **混淆**: 开发者常使用ProGuard或R8进行代码混淆,使得反编译后的代码难以理解。 - **安全限制**: Android系统对应用的权限有严格控制,某些操作如系统调用可能需要特定权限,反汇编后无法直接执行。 - **法律...

Global site tag (gtag.js) - Google Analytics