`
一直飞的菜鸟
  • 浏览: 20804 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

关于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变量名及类名,所有类中部分以设定了固定参数格式的构造函数,枚举等等。


所以我们修改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


正常编译签名即可

主要摘自http://www.pin5i.com/showtopic-android-2.3-code-obfuscation-proguard.html


分享到:
评论

相关推荐

    J2EE-web工程ProGuard代码混淆

    【J2EE-web工程ProGuard代码混淆】是Java开发中的一种安全实践,旨在保护应用程序的源代码不被轻易反编译和理解。ProGuard是一款强大的Java字节码混淆、优化、压缩和预校验工具,它能将Java字节码转换成更难阅读和...

    SpringBoot + proguard+maven多模块实现代码混淆

    proguard-root 是顶级父工程,proguard-modu01、proguard-mudu02是两个业务模块,proguard-server是springboot启动服务类模块,对proguard-modu01、proguard-mudu02两个模块实现proguard代码混淆。 详细实现步骤可...

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

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

    实现maven管理的Javaweb项目的proguard代码混淆功能

    本文将深入探讨如何在Maven管理的Java Web项目中集成ProGuard工具来实现代码混淆功能,以及在过程中可能遇到的问题及解决方案。 首先,让我们了解什么是ProGuard。ProGuard是一个开源的Java字节码混淆器、优化器和...

    springboot工程(单个maven工程)利用proguard实现代码混淆 java demo案例

    本案例是一个Spring Boot单个Maven工程,通过ProGuard实现代码混淆的实践示例。首先,我们需要了解ProGuard的基本配置和使用方法。ProGuard的配置文件通常命名为`proguard.cfg`,在该文件中,我们可以定义混淆规则,...

    springboot工程(单个maven工程)利用proguard实现代码混淆

    基于springboot搭建一个简单案例,利用proguard插件实现代码混淆,增加源代码的阅读和理解的难度, 并不能百分百保证代码安全。常用的应用场景是项目需要部署到客户机器上,一定程度上防止代码泄露。 ProGuard 是一个...

    Proguard混淆Web项目(Spring+Struts2+Mybatis)

    "Proguard混淆Web项目(Spring+Struts2+Mybatis)"是一个针对这类需求的实践案例,它利用了Proguard这一强大的代码混淆、优化和压缩工具。下面我们将深入探讨Proguard的相关知识点及其在Web项目中的应用。 Proguard...

    通过proguard5.2.1代码混淆工具和简单说明

    本实例使用的是把web项目中的源码(src)所有文件打包成jar文件,使用proguard混淆后再把jar文件以及jar解压后的混淆class类文件替换原war项目的相应位置即可。 混淆过程中需要使用keep参数来保持原有一些属性、注解...

    proguard界面混淆版

    总之,ProGuard界面混淆版4.2为开发者提供了便捷的混淆工具,使得代码保护和优化变得更加容易。通过合理设置混淆规则,开发者可以有效提升应用的安全性和性能。然而,混淆并非万能,合理的安全措施应当结合其他手段...

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

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

    java代码混淆器proGuard

    Java代码混淆器ProGuard是Java开发中用于保护和优化应用程序的重要工具。它的主要功能是对Java字节码进行混淆,使得代码难以被逆向工程解析,从而提高代码的安全性。混淆过程中,函数变量、类和方法名会被重命名为...

    proguard4.7代码混淆器使用详细说明(自撰)

    自己写的proguard4.7代码混淆器使用详细说明,之前在网上找了一大堆都还是不会用,或不全,研究了一天,终于达到自己想要的结果,在此总结下,写成文档,一边以后需要,也供大家学习学习,工具包就不上传了,网上一...

    proguard程序混淆器

    ProGuard是一款强大的Java字节码处理工具,主要功能包括代码混淆、优化、压缩和预校验。它被广泛应用于Android应用开发中,用于保护源代码的安全性和减小程序体积,提高运行效率。在J2ME(Java 2 Micro Edition)...

    proguard,代码混淆

    ProGuard是一款功能强大的开源混淆工具,由Eric Lafortune开发,它不仅提供代码混淆功能,还包含了优化、压缩和预校验等特性,使得应用程序更加小巧、安全且运行更高效。 **1. 代码混淆:** 代码混淆是将源代码中的...

    ProGuard工具包,Java代码混淆

    **ProGuard工具包详解——Java代码混淆** 在Java开发中,为了提高应用程序的安全性和保护知识产权,开发者常常会使用一种称为“代码混淆”的技术。ProGuard是Android和Java平台上的一个强大的开源工具,它能实现...

    java 代码混淆 proguard

    ProGuard是一款广泛使用的Java代码混淆工具,它能有效地压缩、优化和混淆Java字节码,使其难以阅读和理解。 ProGuard的主要功能包括: 1. **压缩**:删除未使用的类、字段和方法,减小最终的APK或JAR文件大小,...

    Java防编译技术---proguard混淆器

    Java防编译技术是开发过程中保护源代码安全性和技术保密性的重要手段,而ProGuard混淆器正是其中的关键工具。ProGuard是一款开源的Java字节码混淆、优化、压缩和预校验工具,它能帮助开发者有效地减少应用的体积,...

    java代码混淆工具proguard及教程讲解

    java代码混淆工具 简单使用docx 字典文件 生成的配置示例

    proguard4.6 代码混淆器

    **ProGuard 4.6:专业Java代码混淆工具** 在Android开发中,代码安全和优化是至关重要的环节,而ProGuard 4.6正是这样一个工具,专为Java代码提供混淆、优化、压缩和预检查等功能。它能有效地保护你的应用程序源...

Global site tag (gtag.js) - Google Analytics