`
ljl_xyf
  • 浏览: 616842 次
  • 性别: 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应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来。 Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在...

    android混淆编译代码 防止反编译

    Android如何防止apk程序被反编译 亲自测试 完美混淆

    Obfuscapk:适用于Android应用程序的自动混淆工具,以黑盒方式工作,支持先进的混淆功能,并具有可通过新技术轻松扩展的模块化架构

    Obfuscapk是一个模块化的Python工具,用于在不需要反汇编源代码的情况下混淆Android应用程序,因为在对反编译的smali代码,资源和清单应用了一些混淆技术之后, 用于反编译原始apk文件并构建新的应用程序。 混淆后...

    Android应用开发之代码混淆

    同一时候混淆器仅在公布模式下进行构建应用程序的时候才会执行起来,所以在调试模式下构建程序时,你不必处理混淆代码。让混淆器执行起来是可选择的,可是推荐选上。 1. 改动project.properties # This file i

    淘宝登录java源码-JsPatronum:JavaScript代码混淆器

    code)是指将程序代码转换成一种功能上等价,但是难于阅读和理解的形式。 Android 的 apk 就默认使用了代码混淆,使得反编译 APK 变得比较困难。 争议 观点一前端代码公开,没有秘密,本身代码就没有保护的意义。 ...

    Android如何防止apk程序被反编译(尊重劳动成果)

    Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了一proguard文件夹 proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难...

    Android插件框架Android-Plugin-Framework.zip

    用来开发Android插件APK,并通过动态加载的方式在宿主程序中运行。 若插件APK是完全独立的APK,那么插件apk也可独立安装运行。 若插件APK不是完全独立的apk,比如和插件宿主程序共用一些依赖库,那么插件apk...

    Google Android SDK开发范例大全(完整版)

    Android 有丰富的功能,因此很容易与桌面操作系统混淆。Android 是一个分层的环境,构建在 Linux 内核的基础上,它包括丰富的功能。UI 子系统包括: •窗口 •视图 •用于显示一些常见组件(例如编辑框、列表和下拉...

    android坦克大战原码

    借鉴成功的商业程序代码,是新手快速提高编程水平的途径。为此,笔者制作了 android反编译工具,能将混淆器编译的apk文件,还原java文件,资源文件的android开发 项目。可以直接编译目的apk文件,运行效果与原apk...

    Android Studio配置反混淆的实现

    Android Studio如何混淆 为什么要混淆 了解安卓程序编译的会知道 其实我们的apk并不是很安全,从apk从可以解包出,步骤: 将apk文件改成zip结尾 然后解压zip 然后就会发现里面有一个classes.dex dex2jar 这个工具将...

    AndroidApk混淆编译时,报告java.io.IOException…错误解决办法

    在混淆编译之前,我的程序可以正常运行,混淆编译时,报告如下错误: Error:Execution failed for task ‘:gviews:transformClassesAndResourcesWithProguardForRelease’. Java.io.IOException: The same input ...

    JAVA语言安卓app报毒处理系统源码安卓apk去毒误报毒处理系统源码带加固功能.zip

    系统通过对apk反编译,随机包名,随机签名,混淆代码等方式,回编译生成新的apk安装包 通过系统智能自动处理,间隔5分钟(可以自定义时间)生成一个新包,通过对接对象云储存系统 分发给不同的用户下载使用,确保...

    apkjava源码-AndRoversing:易于使用的Android应用程序逆转工具find_code_calls.py有助于查找静态字符串

    有助于查找静态字符串混淆并使用适用于Android的frida对它们进行动态模糊化注解:假设已正确配置了Android的frida,并且已连接设备/仿真器 print_packages.py 有助于在应用程序组之间查找通用软件包(SDK)。 只需...

    android安卓反编译

    一、apk反编译得到程序的源代码、图片、XML配置、语言资源等文件 下载上述工具中的apktool,解压得到3个文件:aapt.exe,apktool.bat,apktool.jar ,将需要反编译的APK文件放到该目录下, 打开命令行界面(运行-CMD...

    android逆向神器jeb_1.4_full破解版

    JEB是一个功能强大的为安全专业人士设计的Android应用程序的反编译。反向工程或审计APK文件,并减少许多工程师的分析时间。JEB的独特功能是,其Dalvik字节码反编译为Java源代码的能力。无需DEX-JAR转换工具。特别是...

    java后端源码-ingress-apk-mod:入口-apk-mod

    Android 官方 Ingress 应用程序的修改。 它通过修补 apk 文件来工作,项目源不包含 NianticLabs 的任何专有位。 不幸的是,从源代码构建它并不容易,因为它是作为一组帮助脚本开发的,并且高度依赖于环境和许多其他...

    AndResGuard:微信团队为Android提供的proguard资源

    混淆android资源。 它包含所有资源类型(例如drawable,layout,string ...)。 它可以防止Apktool逆转您的apk。 缩小apk大小。 它可以明显减少resources.arsc和程序包大小。 用7zip重新7zip 。 它支持7zip重新...

    网易云加密安卓加固工具

    对常用动态调试Apk的方法进行检测与防范,防止通过IDA Pro、gdb、IntelliJ IDEA等工具动态调试受保护Apk, 增加程序运行安全性。 对抗二次打包 在受保护Apk运行过程中,通过对Apk完整性校验,自动崩溃被二次打包的...

    proguar在Android混淆中的用法

    混淆器通过删除从未用过的代码和使用晦涩名字重命名类、字段和方法,对代码进行压缩,优化和混淆。结果是一个比較小的.apk文件,该文件比較难进行逆向project。因此,当你的应用程序对安全敏感(要求高),比如当你...

Global site tag (gtag.js) - Google Analytics