Android学习心得(13) --- Android代码混淆(1)

我在博客上发表一些我的Android学习心得,希望对大家能有帮助。

这一篇我们讲述一下最新的ADT环境下如何进行Android混淆


在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,
而是project.properties和proguard-project.txt。
我们把之前配置都配置好了,proguard已经在包含在sdk中了。

环境配置参考Android学习心得(1) --- MAC下Android环境的搭建

新建一个项目的时候,会自动生成project.properties和proguard-project.txt文件,
无需自己新建,如果你的项目无法自动生成,那么你就要检查一下你的ADT版本了

如果需要对项目进行全局混码,只需要进行一步操作:
将project.properties的中“#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt”
把“#”去掉就可以了。

 由于apk文件的混淆往往是伴随着文件的压缩和代码的优化问题,混淆的apk文件解压转换为jar文件,
 使用ju-gui打开以后有一个不太引人注意的细节问题---其中找不到资源文件类。
 利用这一特性,我们可以直接利用apktool解压apk文件,对其smali文件的文件名进行分析,
 如果存在一个或以上的资源的smali文件,就可以证明该apk文件没有混淆,反之,则说明已经是混淆过了的文件。
 我们将没有混淆和混淆过的apk分别使用Eclipse导出并签名

参考Android学习心得(12) --- APK签名keystore

分别通过dex2jar和jd-gui查看源代码

明显的发现,第二个显示的源代码已经被混淆过了,产生了a,b,c三个类,R.class已经不见了。
另外一个明显的区别是,混淆过后的apk大小是未混淆的apk三分之一,代码往往经过压缩和优化。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-06 01:26:46

Android学习心得(13) --- Android代码混淆(1)的相关文章

Android 学习心得(2)——Android内置数据库SQLite

一.简介: Android有一个内置数据库SQLite,它是一种轻型数据库,它有五种数据类型:NULL(空型).BLOB(二进制).INTEGER(整型).REAL(浮点型).TEXT(字符串文本),虽然有着五种数据之分,但是在内部SQLite存储数据是无类型的,也就是说你可以在integer中存入char数据之类的.  二.要点: INTEGER PRIMARY KEY中只能存放64位整数 在编写CREATE TABLE时候可以省略字段后面的数据类型 SQLite中可以解析大部分标准SQL语句

Android学习心得(14) --- Android代码混淆(2)

我在博客上发表一些我的Android学习心得,希望对大家能有帮助. 这一篇我们讲述一下Android混淆如何自定义proguard参数来实现 环境配置参考 Android学习心得(1) --- MAC下Android环境的搭建 签名参考Android学习心得(12) --- APK签名keystore 代码混淆Android学习心得(13) --- Android代码混淆(1) dex2jar&jd-guiAndroid学习心得(8) --- MAC下dex2jar和jd-gui使用 1.介绍p

Android学习心得(16) --- Dex文件结构实例解析(2)

我在博客上发表一些我的Android学习心得,希望对大家能有帮助. 这一篇我们讲述一下通过一个实例来分析dex文件结构和组成. 参考Leb128数据类型 Android学习心得(5) --- dex数据类型LEB128 参考实例分析学习理解dex文件结构Android学习心得(15) --- Dex文件结构解析(1) 参考baksmali工具使用Android学习心得(4) --- MAC下smali文件编写与运行 1.编译 我们通过一个例子来分析dex文件的构成 创建一个Hello.java文

[Android学习系列13]关于Gridview的一些事

用mvc的思想去理解 数据源,adapter,xxxView的关系,写代码就轻松多了 先写一个简单的gridview 第一版:只有图片 xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent&q

Android学习心得(11) --- MAC下Android反编译(3)

我在博客上发表一些我的Android学习心得,希望对大家能有帮助. 在前一章我们学习了反编译. 这一章再次学习一下两个demo. 两个demo下载地址 KeygenMe#1.apk crackme0a.apk 链接: http://pan.baidu.com/s/1kTs11Tt 密码: davk KeygenMe#1.apk 1.首先在模拟器安装测试 由于模拟器检测不到wifi mac地址,所以会报错. 我们首先需要将检测代码跳过 先通过dex2jar和jd-gui查看源代码进行分析 查看了m

Android 学习心得 快速排序

快速排序(Quicksort) 是对冒泡排序的一种改进,它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列. 设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序. 值得注意的是,快速排序不是一种稳定

Android 学习心得(6)——ProgressBar(进度条)

没什么技术含量就是对系统进度条的简单应用 贴上代码 1 package cn.bwl.progressbar; 2 3 import android.support.v7.app.ActionBarActivity; 4 import android.view.View; 5 import android.widget.Button; 6 import android.widget.ProgressBar; 7 import android.widget.TextView; 8 import a

Android学习心得(12) --- APK签名keystore

我在博客上发表一些我的Android学习心得,希望对大家能有帮助. 这一篇我们讲述一下Eclipse如何生成keystore并为apk签名 所有的APK必须通过签名才能进行安装,我们在Eclipse中安装的APK 过程是Eclipse先进行打包成APK文件,使用默认的keystore文件进行签名 perferences -> Android -> Build 我们可以看到默认的keystore位置,我们进入.android目录下 我们需要自己创建一个正式的keystore进行签名 右击你需要签

Android学习心得(10) --- MAC下Android反编译(2)

我在博客上发表一些我的Android学习心得,希望对大家能有帮助. 在前一章我们学习了基本的ndk-build脚本参数用法. 这一章再次学习一下反编译. 1.简介 这次分析的是一个很简单的程序,算是反编译入门的一个入门教程 主要学习一下工具的使用,下面是从网上下载下来的测试样本 测试样本EX_05_01_.apk 链接: http://pan.baidu.com/s/1sjOIXJn 密码: 5uq4 2.首先,使用dex2jar和jd-gui查看 参考:Android学习心得(8) --- M