接下来我们将介绍另一种简单适用的防止 apk 反编译的技术 – 对 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 进行加密

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

 

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

 

 

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

 

(2)     apk 进行解密

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

 


本期内容就到这里啦~以上内容均可在 方包博客http://fang1688.cn 网站直接搜索名称访问哦。欢迎感兴趣的小伙伴试试,如果本文对您有帮助,也请帮忙点个 赞 + 在看 啦!❤️

欢迎大家加入方包的优派编程学习圈子,和多名小伙伴们一起交流学习,向方包 1 对 1 提问、跟着方包做项目、领取大量编程资源等。Q群763256989欢迎想一起学习进步的小伙伴~

另外方包最近开发了一款工具类的小程序方包工具箱」,功能包括:抖音、小红书、快手去水印,天气预报,小说在线免费阅读(内含上万部热门小说),历史今天,生成图片二维码,图片识别文字,ai伪原创文章,数字摇号抽奖,文字转语音MP3功能...

送福利!关注下方的公众号:优派编程回复资料,即可获得软件app下载资源和python、java等编程学习资料!

   
点击卡片关注「优派编程」
定期分享 it编程干货

 ⬇️ 点击链接阅读原文直达 方包博客

发表评论

您的电子邮箱地址不会被公开。

22 − = 17