ELF
简介
ELF(Executable and Linking Format),可执行链接格式,目前已经成为UNIX和类UNIX操作系统的标准二进制格式。常用的扩展名有o,so,elf,bin,prx,无扩展名等。ELF格式可用于可执行文件、共享库、目标文件、coredump文件、内核引导镜像文件。
ELF文件有以下几种类型:
- ET_REL,可重定位文件(Relocatable File)。有时也称为目标文件。文件后缀一般为.o,它通常是还未被链接到可执行程序的一段位置独立的代码。包含了创建可执行文件或共享目标文件所需要的代码和数据。
- ET_EXEX,可执行文件(Executable File)。该文件可执行,即是一个程序,是进程开始执行的入口,规定了如何创建一个程序的进程映像。
- ET_DYN,共享目标文件(Shared Object File)。文件是一个动态的、可链接的目标文件,也称为共享库。
- ET_CORE,核心文件(ET_CORE)。在程序崩溃时可以记录整个进程的镜像信息,可以使用GDB辅助调试查找进程崩溃的原因。
ELF解析
Dex
DEX(Dalvik Executable file),Dalvik可执行文件。
AndroidMaindest.xml
Resource.arsc
META-INF
META-INF目录下存储的文件与APK签名有关。
CERT.RSA
CERT.RSA文件中存放了APK的开发者证书与签名信息。该文件用于识别开发者身份和判断APK是否被篡改。可以下发openssl pkcs7 -inform DER -in META-INF/CERT.RSA -noout -print_certs -text查看证书信息。
MANIFEST.MF
MANIFEST.MF是签名的清单文件。每一组信息有Name和SHA1-Digest,表示APK中每个文件的路径和SHA-1散列值的Base64值。