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

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

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

android apk 防止反编译技术第三篇-加密相关推荐

  1. android apk 防止反编译技术第三篇-加密apk

    经过了忙碌的一周终于有时间静下来写点东西了,我们继续介绍android apk防止反编译技术的另一种方法.前两篇我们讲了加壳技术和运行时修改字节码,如果有不明白的可以查看我的博客的前两篇中关于这两种技 ...

  2. 转: android apk 防止反编译技术(1~5连载)

    转: android apk 防止反编译技术 做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习. ...

  3. android apk 防止反编译技术加壳技术(转)

    2019独角兽企业重金招聘Python工程师标准>>> 一.加壳技术原理 所谓apk的加壳技术和pc exe的加壳原理一样,就是在程序的外面再包裹上另外一段代码,保护里面的代码不被非 ...

  4. Android APK包反编译详细步骤教程

    下载安卓apk包反编译软件: https://download.csdn.net/download/LordForce/87485642 1. 解压 dex2jar-2.0.rar 文件. 2. 将 ...

  5. 对Android APK文件反编译查看其源码

    概述 作为android的开发者,相信你会有那么一刻,比如,对于手机中某一款App,有一项功能或者效果你蛮喜欢的,想学习一下它具体是怎么实现的.追求高一点的话,我想深究它这个App的项目架构,本着一探 ...

  6. Android apk破解反编译应用-EasyDump

    大家好,今天与大家分享一个很easy的反编译应用-EasyDump,它主要有以下优点: 1.支持加固后的编译,主包包括360加固.百度加固.腾讯加固.爱加密.梆梆加固. 2.不需要手机root就可以反 ...

  7. android apk 文件反编译

    Android 反编译APK 的好处 第一,当自己代码加混淆的时候,代码找不到CLASS 可以反编译下看看,到底是没有屏蔽,还是有其他的问题 第二,参考下别人的代码是怎么写的 使用工具 就一个 htt ...

  8. Android的APK反编译技术

    Android的APK反编译主要由反编译源码以及反编译资源两部分,第一种方法用来学习别人优秀的代码,第二种方法可以反编译做汉化或其它一些有用的用途(这个你懂的).        想要反编译,那相应的工 ...

  9. 自己写的android apk反编译,获取Android自己写好了的apk以及反编译

    今天,我们先说一下,获取Android自带的apk以及反编译它们来学习Android工程师是怎样写的,今天我们就以拿到Android自带的短信管理器的apk为例子 你可能有疑问,为什么要那么麻烦,从系 ...

最新文章

  1. python-range用法
  2. php unable to save,php – Laravel save()未定义
  3. JavaScript GetAbsoultURl
  4. thinkphp 删除该表的最后一行
  5. mysql-connector-odbc-5.3.12-win32.msi安装步骤
  6. 专题训练——[kuangbin带你飞]最短路练习
  7. 12个新鲜出炉的Web开发框架
  8. 在全志平台调试博通的wifi驱动(类似ap6212)【转】
  9. Java——实现100以内奇数的和
  10. xdb 服务_oracle禁用XDB服务
  11. 2021-05-26防火墙配置
  12. Blend 设置通明窗体
  13. Windows---命令打开截图工具,.bat文件执行
  14. MATLAB算法实战应用案例精讲-【深度学习工具篇】sift特征提取
  15. chrome浏览器安全检查_为您的Chrome浏览器检查皮肤
  16. UML图解和UML代码范例
  17. 实例三十六:精确除法计算(*)
  18. 设计师必备的30款好看的手写字体免费下载
  19. Android:展锐battery
  20. javascript百炼成仙 第一章 掌握JavaScript基础1.5基础考核

热门文章

  1. linux i2c子系统代码分析3 ---操作函数i2c_add_adapter i2c_add_numbered_adapter介绍
  2. Java-理论知识之串行化
  3. 【东方博宜】【入门】2016--旅游景点大排名
  4. 常见排序算法 稳定性分析
  5. 电路方案分析(四)无线充电电动牙刷原理图分析
  6. matlab灰度图转伪彩色,[转载]灰度图转伪彩色图和彩虹图,基于OpenCV 2.4.3
  7. c语言中无符号和有符号之间的运算
  8. android子系统,Android图形子系统详解
  9. Ubuntu18.04下vim+latex-live-preview搭建
  10. c++ 24位bmp格式分析