美文网首页
fishhook分析

fishhook分析

作者: 嘿_原来你也在这里 | 来源:发表于2021-07-20 14:42 被阅读0次

fishhook 实现的大致思路是,通过重新绑定符号,可以实现对 c 方法的 hook。dyld 是通过更新 Mach-O 二进制的 __DATA segment 特定的部分中的指针来绑定 lazy 和 non-lazy 符号,通过确认传递给 rebind_symbol 里每个符号名称更新的位置,就可以找出对应替换来重新绑定这些符号。下面,我针对 fishhook 里的关键代码,和你具体说下 fishhook 的实现原理。首先,遍历 dyld 里的所有 image,取出 image header 和 slide。代码如下:

接下来,找到符号表相关的 command,包括 linkedit segment command、symtab command 和 dysymtab command。代码如下:

然后,获得 base 和 indirect 符号表。实现代码如下:

最后,有了符号表和传入的方法替换数组,就可以进行符号表访问指针地址的替换了,具体实现如下:

以上,就是 fishhook 的实现原理了。fishhook 是对底层的操作,其中查找符号表的过程和堆栈符号化实现原理基本类似,了解了其中原理对于理解可执行文件 Mach-O 内部结构会有很大的帮助。

参考:https://time.geekbang.org/column/article/85331

相关文章

  • fishHook源码分析

    上一篇分析了fishHook原理,本文在fishHook原理基础上进行fishHook源码分析。从fishHook...

  • fishhook分析

    fishhook 实现的大致思路是,通过重新绑定符号,可以实现对 c 方法的 hook。dyld 是通过更新 Ma...

  • ios逆向 - fishhook的源码分析

    一 知识回顾 在上一节,我们分析了fishhook的原理, 知道fishhook 通过动态修改懒加载或非懒加载指针...

  • fishhook源码分析

    之前一直都有听说过fishhook是用来hook系统自带的C函数的,也大概知道原理是重新绑定符号来达到hook...

  • fishhook源码分析

    最早了解到fishhook是看了下面两篇文章之后,顿时让我觉得这是一个非常好的东西。总共210行代码,收获了150...

  • fishhook 源码分析

    引用 Mac OS X ABI Mach-O File Format Reference 前言 fishhook ...

  • fishHook原理分析

    fishHook是Facebook提供的一个动态修改链接mach-O文件的工具。利用MachO文件加载原理,通过修...

  • fishhook实现原理分析

    fishhook[https://github.com/facebook/fishhook] 是FaceBook开...

  • iOS13 indirect_symbol_bindings[i

    iOS13 使用RN 里的 fishhook 会造成崩溃 找到 fishhook/fishhook.c pe...

  • iOS逆向工程之fishhook

    iOS逆向工程之fishhook iOS逆向工程之fishhook

网友评论

      本文标题:fishhook分析

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