android superclass type 添加,Android应用的补丁方法.doc

本文详细介绍了Android应用的DEX文件结构,包括DexHeader和DexLink等关键字段,探讨了补丁方法。DEX文件包含了类定义、字符串ID、方法ID等重要信息,而DexLink部分则涉及辅助数据结构。通过对DEX文件的理解,可以更好地掌握Android应用的更新和优化策略。
摘要由CSDN通过智能技术生成

Android应用的补丁方法

Android应用程序的补丁方法

???

* These are mapped out of the "auxillary" section, and may not be

* included in the file. ???

*/

const DexClassLookup* pClassLookup;

const void* pRegisterMapPool; // RegisterMapClassPool

/* points to start of DEX file data */

const u1* baseAddr;

/* track memory overhead for auxillary structures */

int overhead;

/* additional app-specific data structures associated with the DEX */

//void* auxData;

};

DexOptHeader这里我们先不讨论,如结构中注释所说,DexLink下面的四个字段也不属于原始的DEX文件。

原始的DEX文件只包含下面几个字段:

const DexHeader* pHeader;

const DexStringId* pStringIds;

const DexTypeId* pTypeIds;

const DexFieldId* pFieldIds;

const DexMethodId* pMethodIds;

const DexProtoId* pProtoIds;

const DexClassDef* pClassDefs;

const DexLink* pLinkData;

整个DEX文件分成了头和体两个部分,DexHeader存放着DEX文件的校验以及各数据类型起始地址、偏移量等信息,其它的字段即为DexBody部分。在“DexFile.h”文件中DexHeader的定义如下:

struct DexHeader {

u1 magic[8]; /* includes version number */

u4 checksum; /* adler32 checksum */

u1 signature[kSHA1DigestLen]; /* SHA-1 hash */

u4 fileSize; /* length of entire file */

u4 headerSize; /* offset to start of next section */

u4 endianTag;

u4 linkSize;

u4 linkOff;

u4 mapOff;

u4 stringIdsSize;

u4 stringIdsOff;

u4 typeIdsSize;

u4 typeIdsOff;

u4 protoIdsSize;

u4 protoIdsOff;

u4 fieldIdsSize;

u4 fieldIdsOff;

u4 methodIdsSize;

u4 methodIdsOff;

u4 classDefsSize;

u4 classDefsOff;

u4 dataSize;

u4 dataOff;

};

magic字段用于验证是否为DEX,正常值为“dex/n035/0”,checksum为DEX文件的adler32 检验值,这个校验值验证DEX文件是否损坏,signature用于识别未优化过的DEX档案的SHA1值,checksum与signature这两个字段在后面突破DEX验证小节会详细的分析,fileSize为整个DEX文件的大小,headerSize为本结构DexHeader的大小,值为0x70,endianTag记录标示与处理器相关,在Little-Endian的CPU上值为“0,在Big-Endian的CPU上值为“0”,linkSize表示LinkSection的大小,如果为0表示DEX文件不是静态链接,linkOff表示LinkSection距离DexHeader的偏移,如果li

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值