zoukankan      html  css  js  c++  java
  • iOS安全攻防(十八)看懂mach-o(3)

    个人原创,转帖请注明来源:cnblogs.com/jailbreaker

    之前两篇帖子分别讲了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

  • 相关阅读:
    学习php 韩顺平 数据类型 三元运算,字符串运算类型运算
    学习php 韩顺平
    贪小便宜吃大亏关于汇泽平板和智能手表
    学习spring的第三天
    学习spring的第二天
    学习spring的第一天
    mybatis批量添加和删除
    关于mybatis的<selectKey>中的keyColumn
    mybatis+maven+父子多模块进行crud以及动态条件查询
    mybatis的插入数据后的主键获取
  • 原文地址:https://www.cnblogs.com/jailbreaker/p/4186172.html
Copyright © 2011-2022 走看看