如何加密android apk

摘要:
忙碌了一周后,我们终于有时间静下来写点什么了。让我们继续介绍另一种防止反编译的androidapk方法。该方法也适用于androidapk。安卓的软件包安装服务并不关心这个加密位是否可以正常安装,并且在安装apk时不会影响apk的运行。根据以上描述,我们相信您对apk的伪加密技术有一定的了解。然而,这种方法不再适用于android 4.2。x和更高版本的系统。它将拒绝安装这个加密的apk。在下一篇文章中,我们将解释androidapk的另一种反反编译技术,并期待您的支持。

      经过了忙碌的一周终于有时间静下来写点东西了,我们继续介绍android apk防止反编译技术的另一种方法。前两篇我们讲了加壳技术(http://my.oschina.net/u/2323218/blog/393372)和运行时修改字节码(http://my.oschina.net/u/2323218/blog/396203),如果有不明白的可以查看我的博客的前两篇中关于这两种技术的介绍。接下来我们将介绍另一种简单适用的防止apk反编译的技术-伪加密。

一、伪加密技术原理

     我们知道android apk本质上是zip格式的压缩包,我们将android应用程序的后缀.apk改为.zip就可以用解压软件轻松的将android应用程序解压缩。在日常生活或者工作中,我们通常为了保护我们自己的文件在进行压缩式都会进行加密处理。这样的方法对于android apk同样适用。原理很简单,在zip的文件格式中有一个位用来标示该zip压缩文件中的文件是否被加密,我们只要找到该标志位将其置1就可以实现我们的目的。而android的包安装服务(PackageManagerService)在进行apk安装时并不关心这个加密位(暂时我们就这么叫它吧)可以进行正常的安装并且也不会影响apk的运行。

二、zip文件格式

      zip的文件格式通常有三个部分组成:压缩文件源数据、压缩目录源数据、目录结束标识。这三个部分中和我们说的加密位有关的是压缩目录源数据部分,我们接下来详细介绍这一部分。

压缩目录源数据部分记录着所有的压缩目录源数据。其结构如下:

Central directory file header

 

Offset

Bytes

Description[18]

 0

4

Central directory file header signature =0x02014b50

核心目录文件header标识=(0x02014b50)

 4

2

Version made by

压缩所用的pkware版本

 6

2

Version needed to extract (minimum)

解压所需pkware的最低版本

 8

2

General purpose bit flag

通用位标记

10

2

Compression method

压缩方法

12

2

File last modification time

文件最后修改时间

14

2

File last modification date

文件最后修改日期

16

4

CRC-32

CRC-32算法

20

4

Compressed size

压缩后大小

24

4

Uncompressed size

未压缩的大小

28

2

File name length (n)

文件名长度

30

2

Extra field length (m)

扩展域长度

32

2

File comment length (k)

文件注释长度

34

2

Disk number where file starts

文件开始位置的磁盘编号

36

2

Internal file attributes

内部文件属性

38

4

External file attributes

外部文件属性

42

4

Relative offset of local file header. This is the number of bytes between the start of the first disk on which the file occurs, and the start of the local file header. This allows software reading the central directory to locate the position of the file inside the ZIP file.

本地文件header的相对位移。

46

n

File name

目录文件名

46+n

m

Extra field

扩展域

46+n+m

k

File comment

文件注释内容

该结构中的General purpose bit flag部分的第0位如果置1,标识该压缩包被加密;置为0标识该压缩包没有被加密。

三、具体实施

我们可以利用ZipCenOp.jar这个jar包对apk进行加密和解密操作(也有用python实现这个操作的这里我们不做介绍)。

(1)对apk进行加密

如何加密android apk第1张

加密后,我们用解压缩软件进行解密会看如下的提示信息:

如何加密android apk第2张 

用apktool进行反编译会提示如下的错误信息:

 如何加密android apk第3张 

加密后apk是可以正常的安装和运行的。

 

(2)对apk进行解密

如何加密android apk第4张 

解密对我们来说没有多大的用途,只是了解一下。

 

      根据上面的讲述相信大家对apk的伪加密技术有了一定的了解,不过这种方法对于android 4.2.x版本及以后系统已经不适用了它会拒绝这种加密apk的安装。下一篇我们将讲解另一种android apk防止反编译技术,期待大家的捧场。

感谢您的阅读,期待下次与您见面:

如果对这篇讲的技术有任何疑问及想要获得这篇文章讲的技术的工具,第一时间获得文章更新,每天发布一篇技术大牛的原创文章,更多技术信息分享

欢迎关注个人微信公众平台:程序员互动联盟,扫一扫下方二维码或搜索微信号coder_online即可关注,在线帮您解决技术难点,给大牛直接出难题。

如何加密android apk第5张 

摘自:http://my.oschina.net/u/2323218/blog/399326

免责声明:文章转载自《如何加密android apk》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇VuePress极简配置phpstorm+xdebug进行断点调试下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

快速生成apk 自动发布到网站 便于测试

遇到的问题:    开发者生成的apk 需要不断给 测试安装让他们测试。有没有脚本自动将最新apk上传到服务器,让测试自己安装测试呢?mac电脑 怎么自己搭建文件服务器  启动Tomcat功能在这里不在赘述,有不懂的请你多多百度和Google  然后把你的localhost启用起来!! 不要怂就是干!!! 解决方案: #!/usr/bin/env bash...

微信申请 包名和签名

开发环境: window 7 Egret Engine 5.0.14 Egret support 5.0.12 Eclipse    一  申请微信移动应用 二  怎么获取Android包名 三  怎么获取Android签名   一  申请微信移动应用 1 登录微信开放平台: https://open.weixin.qq.com/   2 管理中心-移动应...

使用ADB上传、下载文件和安装软件的方法

ADB全称Android Debug Bridge, 是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod手机它的主要功能有:* 运行设备的shell(命令行)* 管理模拟器或设备的端口映射* 计算机和设备之间上传/下载文件* 将本地apk软件安装至模拟器或android设备本人发现用ADB在计算机...

使用ApkTool以及dex2jar对apk进行反编译-更新异常以及解决方案

使用ApkTool以及dex2jar对apk进行反编译 相关工具下载地址 使用ApkTool对apk进行反编译以及打包 下载并解压ApkTool 使用ApkTool对apk进行反编译 使用ApkTool对apk进行打包 使用Dex2Jar以及JD-GUI反编译apk 下载Dex2Jar以及JD-GUI 使用dex2jarbat得到jar文件 使用...

Android 命令行编译、打包生成apk文件

一、搭建搭建环境 1. 安装JDK 和 Android SDK 2. 配置环境变量D:android-sdk-windows oolsC:Program FilesJavajdk1.6.0_20in3. 例子信息项目目录:D:ProjectDemoSDK目录 :D:android-sdk-windowsplatformsandroid-8二、...

html5 如何打包成apk,将H5封装成android应用APK文件的几种方法

直接使用编程软件提供的方法: 1、需要下载安装MyEclipse2014,Android SDK,eclipse(需配置Android开发环境) Java和Android环境安装与配置。 2、打开MyEclipse2014,新建一个HTML5 Mobile Application Project,命名,例如:hello。 3、html5程序在工程www目...