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

  • 相关阅读:
    又是运行不到main的问题
    stlink问题
    AD7124踩过的坑
    stm32上调试AD5410
    linux读xml文件问题
    stm8问题记录
    430 仿真器 问题
    虚拟机VMware显示“内部错误”的解决方法
    VS2008 如何设置字体大小?
    Hyperledger Indy项目
  • 原文地址:https://www.cnblogs.com/jailbreaker/p/4186172.html
Copyright © 2011-2022 走看看