美文网首页
fishHook原理----(2)

fishHook原理----(2)

作者: spyn_n | 来源:发表于2021-05-09 17:04 被阅读0次

在上一篇 fishHook原理----(1) 中,我们讲了fishHookHOOK流程,当第一次调用NSLog的时候,首先会到找桩去执行一段代码,这段代码就是去找到懒加载里面的值去执行,然后它默认会b到另一段代码,就是去找non_Lazy Symbol去找dyld_stub_binder的真实函数的地址完成符号绑定,第一次绑定完成之后,完成了第一次调用;
3、当第二次调用NSLog的时候,还是会找到桩去执行一段代码,代码会跳到懒加载里面的Data的值去执行,但是这个时候,Data里面的值指向了NSLog的真实地址,不再是指向查找dyld_stub_binder的真实函数的地址完成符号绑定;
  使用fishHook的核心代码就这几行,rebinding结构体有一个name成员变量,那它是如何通过name找到NSLog符号的呢?

struct rebinding psyLog;
    psyLog.name = "NSLog";
    psyLog.replacement = psy_Log;
    // 原函数
    psyLog.replaced = (void *)&sysLog;
    
    struct rebinding psysh[] = {
        psyLog
    };
    
    rebind_symbols(psysh, 1);

以下是官方给的在懒加载表或非懒加载表中查找给定name的过程:

查找过程

看着可能看不大懂,我们先撇开这个图,看一下MachO,从懒加载表开始,因为懒加载是外部函数,_NSLog的下表是第0位,对应的在间接符号表也是第0位。

懒加载表 间接符号表

找到间接符号表的对应index,得到Data段数据0xB2(对应的十进制是178),还有DescriptionSymbol符号表,意思就是在Symbol表的178标号位置

Symbol表
然后对应的找到Symbol表的对应#178,得到Data段数据0xD7,还有DescriptionString Table Index字符串表,意思就是在String Table Index表的偏移0xD7位置。 String Table

来到String Table根据刚刚得到的偏移量0xD7,通过初始位置+偏移量定位到对应的位置,0xD3D0 + 0xD7 = 0xD4A7,终于查到我们需要的字符串ASCII5F 4E 53 4C 6F 67 ,Value_NSLog。 至此,再返回去看一下官方给的查找流程图,就很明了了。

相关文章

  • fishHook源码分析

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

  • fishHook原理----(2)

    在上一篇 fishHook原理----(1)[https://www.jianshu.com/p/4c7617af...

  • iOS逆向之反HOOK的基本防护

    iOS逆向之Method Swizzle iOS逆向之fishHook原理探究 iOS逆向之fishHook怎么通...

  • fishhook原理

    fishhook fishhook是Facebook提供的用于hook系统c函数的库。它能动态重新绑定运行在iOS...

  • fishHook原理

    fishHook fishHook是Facebook提供的一个动态修改链接mach-O文件的工具。利用MachO文...

  • fishhook原理

    在介绍fishhook原理之前,我们先看两个例子 demo 1 输出结果: 发现hook住了 demo2 输出结果...

  • iOS中的HOOK技术

    一、fishhook 1、介绍 fishhook是facebook出品的一个开源库。利用mach-o文件加载原理,...

  • Fishhook 学习笔记

    一、Fishhook 是什么? 简单来说Fishhook就是hook函数的一种工具,当然它hook的原理和我们熟知...

  • fishhook

    fishhook是facebook维护的一个开源的可以替换方法的库fishhook的原理是:当app加载进内存调用...

  • ios逆向 - fishhook的源码分析

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

网友评论

      本文标题:fishHook原理----(2)

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