美文网首页
共享缓存机制、PIC技术、符号绑定、符号查找

共享缓存机制、PIC技术、符号绑定、符号查找

作者: Code_人生 | 来源:发表于2019-10-24 09:49 被阅读0次

一、共享缓存机制

苹果为了节约内存以及提高加载速度,将系统的动态库放在内存的一块特殊位置,然后将这块内存共享给其他的应用。这块区域就是动态库共享缓存(dyld shared cache

二、PIC技术(位置代码独立)

编译的时候,符号地址。dyld加载的时候,将符号地址和真实地址绑定

  • 由于有了共享缓存,那么我们所调用的系统函数在编译时刻是没法确定其内存地址。
  • 所以苹果采用了PIC技术。在MachO文件DATA段建立两张表,懒加载和非懒加载表,利用存放指向外部函数的指针(符号)!
  • 当我们首次调用懒加载表内的函数时,DYLD会对该函数进行绑定。

三、符号绑定过程分析

  • 符号表,分两种,一种非懒加载表、一种懒加载表
  • 获取 offset 0x00008010

  • image list 获取所有模块列表,然后找到 内存地址(MachO的首地址)0x0000000100754000

  • 获取符号地址:0x0000000100754000 + offset(0x00008010) = 0x10075C010
  • memory read 0x10075C010(内存地址) 读内存
  • iOS小端模式,从右往左读 0x010075a574

  • dis -s 0x010075a574 看汇编

  • 第二个断点重复操作
  • 第三个断点重复操作,已经执行了rebind_symbols

四、通过符号找到字符串

  • Section64(_DATA,_la_symbol_ptr) -> Lazy Symbol PointersDynamic Symbol Table -> Indirect Symbols 是对应的
  • 000000B2 换成十进制 178,对应为Symbol Table -> Symbols中的角标
  • 000000D7 对应为String Table偏移值
  • 000000D7 + 0000D3D0 = 0xD4A7

相关文章

  • 共享缓存机制、PIC技术、符号绑定、符号查找

    一、共享缓存机制 苹果为了节约内存以及提高加载速度,将系统的动态库放在内存的一块特殊位置,然后将这块内存共享给其他...

  • iOS 系统的延迟绑定机制

    延迟绑定机制是指将符号的绑定工作推迟到符号第一次被程序调用的时候。为了大家更好地理解延迟绑定的概念以及我们为什么要...

  • 深入理解ES6--6.符号与符号属性

    主要知识点:创建符号值、使用符号值、共享符号值、符号值转换。检索符号值属性以及知名符号 1. Symbol基础 1...

  • IOS之fishhook原理探究

    前言 fishhook可以替换系统C函数是因为有共享缓存库和PIC技术(位置代码独立) MachO是由dyld加载...

  • find命令

    递归查找 非递归查找 通用符号匹配,要用双引号引起来,特殊符号需要用\斜杠

  • 算法 -- 符号表

    顺序查找无序存储的符号表 -- 链表 有序符号表(基于数组)二分查找 符号表用两个数组实现:一个存放 key,一个...

  • 菜鸟级jq基础入门

    美元符号定义 jQuery($符号) 选择符(selector)"查询"和"查找" HTML 元素(一般是$(选择...

  • Glide 图片库原理(三)缓存机制

    缓存机制 查找缓存使用 先到活动缓存查找,如果有直接返回显示 如果活动缓存没有,那么去LRU内存缓存查找,如果有那...

  • 《iOS防护08》防护fishhook

    fishhook的原理是修改符号绑定 如何拿到ptrace函数的句柄: 添加ptrace符号断点可以得到ptrac...

  • ★08.缓存属性和方法ID

    简介 在获取一个 属性/方法ID 的时候需要基于名称或者 属性/方法描述符 的 符号查找 , 符号查找 的代价相对...

网友评论

      本文标题:共享缓存机制、PIC技术、符号绑定、符号查找

      本文链接:https://www.haomeiwen.com/subject/kubkvctx.html