博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS安全攻防(十八)看懂mach-o(3)
阅读量:5314 次
发布时间:2019-06-14

本文共 1176 字,大约阅读时间需要 3 分钟。

个人原创,转帖请注明来源:

之前两篇帖子分别讲了mach-o的header区和load command区中的segment,今天继续讲segment中的的setcion,一般在__TEXT和__DATA段中有section。这里注意下命名规范,大写代表segment,小写是section,例如 __TEXT.__text,指的是__TEXT段的__text节。

先看section结构定义:

NewImage

再看hopper中的__TEXT.__text 描述:

NewImage

根据结构定义依次分析:

1.sectname  例子中是__text ,就是主程序代码

2.segname   该section所属的 segment名,例子中是__TEXT

3.addr  该section在内存的启始位置,例子中值是0xb268,跳转到该位置看下,hopper的注释也非常好,看下图:

NewImage

4.size 该section的大小

5.offset  该section的文件偏移,根据例子中上下文,文件开始于0x4000位置,offset大小是0x7268,这样就得出绝对位置是0x4000+0x7268,和之前addr的值是一样。

6.align 字节大小对齐

7. reloff  重定位入口的文件偏移

8.nreloc  需要重定位的入口数量

9.flags  包含section的type和attributes,具体看loader.h。

结构中的最后2项保留用。

 

以下是__TEXT段的section

__text  主程序代码

__stubs__stub_helper   用于动态链接库的stub

__cstring    c语言字符串

__const    const修饰的常量

__objc_methname    objc的方法名称

__objc_methtype    objc方法类型

__objc_classname    objc类方法

 

以下是__DATA段的section

__objc_ivars   objc类的实例变量

__objc_classlist    objc类列表

__objc_protolist    objc协议列表

__objc_imageinfo    objc镜像信息

__objc_const    objc常量

__objc_selfrefs    objc自引用(self)

__objc_protorefs    objc协议引用

__objc_superrefs    objc超类引用

__cfstring   使用Core Foundation字符串

__bss   BSS

至此,一共3篇“看懂mach-o” ,让我们了解mach-o的布局,最后看下hopper中分析出来的segment和section列表。

NewImage

 

NewImage

 

转载于:https://www.cnblogs.com/jailbreaker/p/4186172.html

你可能感兴趣的文章
MySQL数据库备份工具mysqldump的使用(转)
查看>>
NTP服务器配置
查看>>
【转】OO无双的blocking/non-blocking执行时刻
查看>>
ul li剧中对齐
查看>>
关于 linux 的 limit 的设置
查看>>
HDU(4528),BFS,2013腾讯编程马拉松初赛第五场(3月25日)
查看>>
vim中文帮助教程
查看>>
MySQL基础3
查看>>
云计算数据与信息安全防护
查看>>
全局设置导航栏
查看>>
RxJS & Angular
查看>>
面向对象(多异常的声明与处理)
查看>>
MTK笔记
查看>>
ERROR: duplicate key value violates unique constraint "xxx"
查看>>
激活office 365 的启动文件
查看>>
无法根据中文查找
查看>>
[简讯]phpMyAdmin项目已迁移至GitHub
查看>>
转载 python多重继承C3算法
查看>>
【题解】 bzoj1597: [Usaco2008 Mar]土地购买 (动态规划+斜率优化)
查看>>
css文本溢出显示省略号
查看>>