DEX | ELF 文件结构介绍

Dex文件结构:

1.dex文件中的数据结构

        u1/uint8_t=>表示1字节的无符号数

        u2/uint16_t=>表示2字节的无符号数

        u4/uint32_t=>表示4字节的无符号数

        u8/unit64_t=>表示8字节的无符号数

        sleb128=>有符号leb128,可变长度为1-5字节

        uleb128=>无符号符号leb128,可变长度为1-5字节

        uleb128p1=>无符号leb128值加1,可变长度为1-5字节

2.dex文件整体结构

struct DexFile {

        DexHeader

        DexStringId

        DexTypeId

        DexProtoId//对DexType进一步说明

        DexFieldId

        DexMethodId

        DexClassDef

        DexData

        DexLink

}

以索引为线索

3.DEX的内存映射

        与静态类似,只是变为xxxItem结构

        ClassObject结构由六个部分组成:    

        PDvmDex:// DEX文件字段     

        super://超类    

        sfields://对应DexClassData结构中的staticFields静态字段      

        iFields://对应DexClassData结构中的instanceFields实例字段       

        directMethods://对应DexClassData结构中的directMethods直接方法字段   

        virtualMethods:///对应DexClassData结构中的virtualMethods虚方法字段

        DexClassDef :  class_def_item   

        DexClassData:  class_data_item     

        DexFiled(staticFields): sfileds      

        DexFiled(instanceFields): ifileds         

        DexMethod(directMethods):directMethods     

        DexMethod(virtualMethods):virtualMethods        

        DexCode: code_item  

ELF文件结构:

        linux elf文件、windows pe文件

        Android操作系统内核采用Linux内核框架实现  Android ELF文件

ELF文件整体结构:

        ELF Header-->ELF文件头的位置是固定的

        Segment Header Table-->ELF程序头描述的是段的相关信息

        .init

        .text

        .rodata

        .data

        .symtab  符号表

        .line         

        .strtab  字符串表

        Section Header Table-->ELF节头表描述的是节区的信息

        动态用段,静态用节

        readelf的使用:

                 -a

                 -h

                 -l

                 -S

                 -e

                 -s

        arsc文件:

                arsc文件解析

        xml文件:

                xml文件解析及工具

        xml加密

                xml和arsc简单十六进制加密:

以arsc为例:在0x00000028h的文件偏移地址之前进行修改,如改头 部第一个HEX操作数为00。搜索字符,'1c' 搜索3下。把1c前面的 01改00,就可以了。看020行,头部字节流,把尾部的00改为和头 部一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Codeooo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值