hook

作者: 傲世泡泡 | 来源:发表于2021-06-10 14:53 被阅读0次

理论:

讲讲 main之前的 加载流程 你就知道为啥有机会改他们代码了

1.配置相关环境的操作

2.设置上下文信息

3.配置进程是否受限

4.检测环境变量

5.直到getHostInfo

第二步 加载共享缓存

第三步:实例化主程序

第四步:load any inserted libraries 加载插入动态库

第五步:链接主程序(就是在做符号绑定)

比如将UIKit、UIFoundation里面的方法的实际地址告诉主程序在哪个位置,会把所有的依赖库加载到内存、包括自己的framework

weakBind()弱绑定

项目中load方法的先后顺序跟Compile Sources中文件顺序有关

framework的执行顺序和link Binary With Libraries 顺序有关

简单理解:

比如这个sdk是framework嘛 无外乎 动态库、静态库,

也就是说只要我们的 写一个framework 在link Binary With Libraries 里面排在SDK的framework之前,或者 我们的framework属于插入动态库

那么我们的代码就比SDK的代码先执行,所以就可以在我们的framework里面 修改SDK里面方法的IMP,这样 等到程序运行的时候 调用SDK的方法就会走到我们修改的IMP上来 就可以做些修改

OC是运行时语言,方法的实现 也就是IMP实在运行时去找的,如果我在运行时 重新指定了一个方法的实现(IMP) 那么调用的时候 就会走到我们指定的位置来,刚刚说的main之前的加载流程 主要想说 framework的加载 也是有顺序的 既然有顺序 就有机会修改

实践:

hook这个方法

这个的时候 就走到我的方法里 打印了我的代码,我已经都修改了SDK的方法调用了 然后我想修改他哪个方法就修改哪个方法调用了

void new_registerMirrorView(id self,SEL _cmd,id view) {

    NSLog(@"set注入成功 🍺🍺🍺🍺");

    old_registerMirrorView(self, _cmd, view);

}

old_registerMirrorView 这个就是原来方法的IMP

oc分类实现

相关文章

  • 堆利用的手法:

    malloc_hook realloc_hook+free_hook free_hook unsorted_bin...

  • hook原理小结

    常用的hook方式主要有导入表hook、导出表hook和inline hook三种。 一,导入表hook 首先需要...

  • 常用油猴Hook插件

    hook cookie hook 过debugger

  • react hook 状态与操作封装

    统一hook 数组hook

  • 遍历hook Dex中的类

    创建DexFile 遍历拿出所有类名 找到类对象,进行hook hook构造函数 hook方法 打印hook方法中的日志

  • frida native hook

    本篇介绍 frida 也支持hook native,本篇看下如何hook native hook native函数...

  • HOOK

    HOOK 一、HOOK概述 HOOK(钩子) 其实就是改变程序执行流程的一种技术的统称! 二、iOS中HOOK技术...

  • Windows Hook

    Hook 关于Hook 1.1什么是Hook 钩子(Hook),是Windows消息处理机制的一个平台,应用程序可...

  • Android 进阶解密阅读笔记17

    Hook 技术 先来说我看完这章节对 Hook 的理解。Hook 关键在于找到合适的 Hook 点(也就是需要代理...

  • off the hook表示“摆脱钩子”?

    Off the hook啥意思? Off the hook“摆脱困境”,hook表示“钩子”,off the ho...

网友评论

      本文标题:hook

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