__DATA
__DATAsegment的section:
- 概述- 图
- 文字- __DATA,__data: Initialized global variables (for example- int a = 1;or- static int a = 1;).
- __DATA,__const: Constant data needing relocation (for example,- char * const p = "foo";).
- __DATA,__bss: Uninitialized static variables (for example,- static int a;).
- __DATA,__common: Uninitialized external globals (for example,- int a;outside function blocks).
- __DATA,__dyld: A placeholder section, used by the dynamic linker.
- __DATA,__la_symbol_ptr: Lazy symbol pointers. Symbol pointers for each undefined function called by the executable.
- __DATA,__nl_symbol_ptr: Non lazy symbol pointers. Symbol pointers for each undefined data symbol referenced by the executable.
 
 
- 图
- 详解- __DATA,__bss- Data for uninitialized static variables (for example, static int i;).
- 存储未初始化的静态量。比如:static NSThread *_networkRequestThread = nil;- 其中这里面的size表示应用运行占用的内存,不是实际的占用空间。所以计算大小的时候应该去掉这部分数据。
 
 
- Data for uninitialized static variables (for example, 
- __DATA,__common- Uninitialized imported symbol definitions (for example, int i;) located in the global scope (outside of a function declaration).
- 存储导出的全局的数据。类似于static,但是没有用static修饰- 比如- KSCrash里面NSDictionary* g_registerOrders;,g_registerOrders就存储在__common里面
 
- KSCrash里面
 
- 比如
 
- Uninitialized imported symbol definitions (for example, 
- __DATA,__data- Initialized mutable variables, such as writable C strings and data arrays.
- 放了协议和一些固定了地址(已经初始化)的静态量
 
- __DATA,__la_symbol_ptr- Lazy symbol pointers, which are indirect references to functions imported from a different file- 详见:PIC
 
- 懒加载的函数指针地址。和__stubs和__stub_helper配合使用
 
- Lazy symbol pointers, which are indirect references to functions imported from a different file
- __DATA,__nl_symbol_ptr- Non-lazy symbol pointers, which are indirect references to data items imported from a different file- 详见:PIC
 
 
- Non-lazy symbol pointers, which are indirect references to data items imported from a different file
- __DATA,__dyld- Placeholder section used by the dynamic linker.
 
- __DATA,__cfstring- 使用Core Foundation字符串
 
- __DATA,__const- Initialized relocatable constant variables.
- 存储constant常量的数据。比如使用extern导出的const修饰的常量
 
- __DATA,__mod_init_func- Module initialization functions. The C++ compiler places static constructors here.
- 模块初始化的方法
 
- __DATA,__mod_term_func- Module termination functions.
 
- __DATA,__objc_classlist- objc类列表,保存类信息,映射了__objc_data的地址
 
- objc类列表,保存类信息,映射了
- __DATA,__objc_data- objc的数据。用于保存类需要的数据。最主要的内容是映射__objc_const地址,用于找到类的相关数据
 
- objc的数据。用于保存类需要的数据。最主要的内容是映射
- __DATA,__objc_nlclslist- Objective-C的- +load函数列表,比- __mod_init_func更早执行
 
- __DATA,__objc_catlist- categories
 
- __DATA,__objc_nlcatlist- Objective-C的categories的- +load函数列表
 
- __DATA,__objc_protolist- objc协议列表
 
- __DATA,__objc_imageinfo- objc镜像信息
 
- __DATA,__got- 存储引用符号的实际地址,类似于动态符号表
 
- __DATA,__objc_const- objc常量。保存objc_classdata结构体数据。用于映射类相关数据的地址,比如类名,方法名等
 
- objc常量。保存
- __DATA,__objc_selrefs- 引用到的objc方法
 
- __DATA,__objc_protorefs- 引用到的objc协议
 
- __DATA,__objc_classrefs- 引用到的objc类
 
- __DATA,__objc_superrefs- objc超类引用
 
- __DATA,__objc_ivar- objc的ivar指针,存储属性
 
- objc的
 
举例
- MachOView查看- zzzzHeiBaoLib.dylib
- 某app- __DATA的segment commond - 说明- 命令类型是LC_SEGMENT_64
- 命令的大小1832
- segment 命令的名称是__DATA
- 映射的内存地址是4360744960(十进制)
- 内存的大小12488704
- 文件的偏移量是65777664
- 需要映射的文件的大小10424320
- 最大内存保护权限:读写执行
- 初始内存权限:读写
- 这个端附属了22个 section,也就是说1832大小的segment_command包括了22个section命令的大小。
- 看的方法:offset代表文件的便宜量、Data表示内存地址中存储的值、description表示这段内存地址的名称的描述、value表示存储的值的可视描述。
 
- 后续的22个section
 
- 说明
 
 
 
- zzzzHeiBaoLib.dylib


