章节:在安卓研发中,包公布是研发的最后一个环节,apk是整个项目的源码和资源的结合体;对于不懂点反编译原理的人可以精彩编译器出有apk的源码资源,并且可以改动资源代码、新的包编译器,轻轻松松变为自己的apk或者改动其中一部分盗取用户信息。代码被反编译对于apk的开发者和使用者而言十分困惑。apk修整、避免反编译此时变得尤为重要。
虽然有好多给apk修整的第三方,有可能并不需要自己做到apk修整,但是理解apk修整原理还是很有适当的。本文主要向大家讲解apk修整原理和非常简单构建。
目录:一、apk少见修整方式二、apk修整原理三、apk修整构建四、apk该方式修整后缺失一、apk少见修整方式(1)代码层级加密--代码误解代码误解是一种常用的加密方式。本质是把工程中原本的有明确含义的类名、变量名、方法名,改动成让人不懂的名字。少见的代码误解工具proguard(有兴趣的可以自己看一下该工具:http://t.cn/ELjgHdi)。
该加密方式只是对工程获取了大于的维护,并不是说道无法逆向密码;只是说道可玩性减少,必须冷静。(2)Dex文件加密dex是Android工程中的代码资源文件,通过dex可以反编译出有java代码。dex的加壳是少见的加密方式。通过对dex文件加密拼凑加壳,可以有效地的对工程代码展开维护。
apk工程在加装顺利后,app启动时会有dex解密的过程,然后新的读取解密后的dex文件。第二种加密方式也就是本文要为大家共享的加密方式。基本原理是在jni层,用于DexClassLoader动态读取技术已完成对加密classex.dex的动态读取,dex文件可以附属在assert或raw目录。
二、apk修整原理(1)apk文件结构可执行文件一个apk包在,可以看见如下目录结构:assets:存放在工程资源(图片、本地html等)文件的目录Lib:存放在ndk编译器出来的so文件(so:C/C++编译器出有的文件)META-INF:该目录下存放在的是亲笔签名信息,用来确保apk包在的完整性和系统的安全性:CERT.RSA:留存着该应用程序的证书和许可信息CERT.SF:留存着SHA-1信息资源列表MANIFEST.MF:表格信息res:存放在资源(布局xml、布局xml提到图片等)文件的目录AndroidManifest.xml:表格文件,它叙述了应用于的名字、版本、权限、登记的服务等信息classes.dex:java源码编译器经过编译器后分解的dalvik字节码文件,主要在Dalvik虚拟机上运营的主要代码部分resources.arsc:编译器后的二进制资源文件META-INF文件主要是跟亲笔签名有关的文件,确保了apk的完整性和安全性。apk每次新的亲笔签名必须移除该文件夹。必须大家主要注目的是classes.dex文件:因为apk修整主要是对dex文件展开的加密。
(2)Dex文件结构Java源文件分解Dex文件的同构关系dex文件可以解读为由java文件编译器生产的,直观展现出就是dex文件可以编译器出有java源码;dex文件的起到是记录整个工程(一般来说是一个Android工程)的所有类文件的信息;dex文件就是指class文件演进而来的,class文件不存在校验信息,dex文件则去除了校验,并且统合了整个工程的类信息。Dex文件结构文件头header包括了dex文件的信息,也是大家必须注目的部分。因为下面的操作者中会有dex文件的改动操作者,而辨别是否是准确的dex文件是由header部分要求的。
下面看一下header部分的信息:structDexFile{DexHeaderheader;DexStringIdStringIds[StringIdsSize];DexTypeIdTypeIds[typeIdsSize];DexProtoIdProtoIds[protoIdsSize];DexFieldIdFieldIds[fieldIdsSize];DexMethodIdMethodIds[methodIdsSize];DexClassDefData[];DexLinkLinkData;}Dex文件header部分结构体信息Header部分有必须留意的三个字段:checksum字段、signature字段、filesize字段。checksum字段:checksum是校验码字段,校验dex数据的完整性signature字段:signature是SHA-1亲笔签名字段,dex数据完整性校验signature字段:留存classes.dex文件总长度之所以注目这三个字段,是因为后面不会有对dex的新的拼凑。
dex拼凑后要改动这三个字段,字段改动准确后才可以确保dex的准确读取。
本文关键词:浅谈,开元98.kycom官网,安卓,apk,加固,原理,和,实现,开元,98.kycom
本文来源:开元98.kycom官网-www.websitedesignerindia.net