android apk 自我保护技术-加密apk

经过了忙碌的一周终于有时间静下来写点东西了,我们继续介绍android apk防止反编译技术的另一种方法。前两篇我们讲了加壳技术(http://my.oschina.net/u/2323218/blog/396203)和运行时修改字节码(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进行加密

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

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

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

(2)对apk进行解密

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

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

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

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

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

时间: 04-12

android apk 自我保护技术-加密apk的相关文章

android apk 自我保护技术-完整性校验

关于防止android apk被反编译的技术我们前面已经讲了四种. 加壳技术 运行时修改字节码 伪加密 对抗JD-GUI 如果有不明白的可以查看我的博客的前四篇中关于这四种技术的介绍.接下来我们接着介绍另一种防止apk反编译的技术-完整性校验. 一.完整性校验原理 所谓完整性校验就是我们用各种算法来计算一个文件的完整性,防止这个文件被修改.其中常用的方法就是计算一个文件的CRC32的值或者计算一个文件的哈希值.我们在防止apk被反编译的方法中也可以采用这种方法.我们知道apk生成的classes

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

经过了忙碌的一周终于有时间静下来写点东西了,我们继续介绍android apk防止反编译技术的另一种方法.前两篇我们讲了加壳技术和运行时修改字节码,如果有不明白的可以查看我的博客的前两篇中关于这两种技术的介绍.接下来我们将介绍另一种简单适用的防止apk反编译的技术-伪加密. 一.伪加密技术原理 我们知道android apk本质上是zip格式的压缩包,我们将android应用程序的后缀.apk改为.zip就可以用解压软件轻松的将android应用程序解压缩.在日常生活或者工作中,我们通常为了保护

Android APK加固技术方案调研

@author ASCE1885的 Github 简书 微博 CSDN 最近项目中需要实现自己的APK加固方案,因此就有了这一篇调研报告. 软件安全领域的攻防向来是道高一尺魔高一丈,攻防双方都处于不断的演变和进化过程中,因此软件加固技术需要长期持续的研究与投入. 目前成熟的第三方解决方案 1. 娜迦 针对Android平台下的APP被逆向分析,破解,植入木马病毒后,用户敏感信息泄露或者被钓鱼网站劫持,NAGA Android保护采用防止静态分析与防止动态调试全面防护的思路,在未保护程序运行的不同

如何防止Android反编译apk,爱加密进行安卓加密保护!

近年来,针对网购.交友网站,发送伪装成"样品"或"私照"的钓鱼.木马链接类诈骗逐渐增多:套取个人信息类诈骗手法有所升级,如借卡转账.机票退订等,要求提供银行卡卡号.身份证号及短信验证码:大家熟悉的网络买卖,买家可能"易容",网上的店铺也可能是"僵尸".尤其是近日<E天下>头条报道<小心!不明链接勿乱按>后,引来众多读者反馈:骗子是怎样伪装的呢?常用的伎俩有哪些?现在,爱加密就来为大家一一揭晓,帮助大家在

App山寨疯狂 爱加密Apk加密平台防破解

App山寨疯狂 爱加密Apk加密平台防破解,Android系统由于其开源性,眼下已占领全球智能机近80%的市场,远超微软的WP系统和苹果的IOS系统.然而也正是由于开源性,Android盗版App在国内横行泛滥,盗版App通过广告骚扰.窃取账号.盗取隐私.远程控制.恶意扣费.购物欺诈等影响用户的体验,侵害用户利益.文章出处:www.ijiami.cn App山寨疯狂 爱加密Apk加密平台防破解,面对严重的App山寨横行的现象,国内第三方针对Android应用加固的平台爱加密,致力于保护App安全

推荐:安卓apk的签名加密

看到好的技术教程就想转载一下,不喜勿喷!谢谢配合,仅供菜鸟学习研究,不要做坏事哦\(^o^)/~ 1.加密apk. 这里我用的是爱加密  从project bin目录下copy apk文件上传到爱加密网站 加密 ,同时下载签名工具.可以参照  http://jingyan.baidu.com/article/925f8cb8151347c0dde0563d.html http://www.ijiami.cn/apply/Sign 2.生成签名apk的keystone 1)在eclipse中生成k

安卓反编译揭秘,伪加密APK文件如何被破坏

1. 源码混淆 如上图,对Android APP的源码进行混淆后混淆器将代码中的所有变量.函数.类的名称加密为简短的英文字母代号,在APP被破解后增加破解者对代码的阅读难度. 但是混淆的功效只能运作在APP已经被破解后,而且只是增加破解者的难度时间,对其防止破解的作用意义不是很大. 2. 反工具破解之伪加密 伪加密是Android4.2.x系统发布前最流行的加密方式之一,通过java代码对APK(压缩文件)进行伪加密,其修改原理是修改连续4位字节标记为"P K 01 02"的后第5位字

unity3d-配置Android环境,打包发布Apk流程详解

31:unity3d-配置Android环境,打包发布Apk流程详解 作者 阿西纳尼 关注 2016.08.28 22:52 字数 498 阅读 1806评论 0喜欢 5 Unity配置Android环境,打包发布安卓流程 一:SDK与JDK下载地址:http://pan.baidu.com/s/1mhVaXHe下载完成后,解压文件 SDK文件 二.安装 JDK 运行安装程序jdk-7u67-windows-x64 Java-JDK 分别点击下一步进行安装. 安装中 在安装过程中先后会出现两次选

Android减包 - 减少APK大小

本文是对Google官方文档 Reduce APK Size 的翻译,点击"阅读原文"可以查看英文原文. 译者简介:damonxia(夏正冬),天天P图Android工程师 用户经常会避免下载看起来体积较大的应用,特别是在不稳定的2G.3G网络或者在以字节付费的网络.这篇文章描述了怎样减少你的APK大小,这会让更多的用户愿意下载你的应用. 理解APK的结构 在讨论怎样减少应用大小之前,先了解APK的结构是有用的.一个APK文件就是ZIP包,其中包含了组成你的应用的所有文件,比如Java