Swift 从获取所有 NSObject 对象聊起:ObjC、汇编语言以及底层方法调用链(二)

在这里插入图片描述

概览

我们在第一篇博文:

中讨论了 Swift 语言中的钩子(Hook)机制,以及如何用它来“勾”住 NSObject 的 init 构造器方法。

在这里插入图片描述

不过,目前“疑云重重”的实现显然“虐”的你在一直“怀疑人生”。而在本篇的讨论中我们来看看第三方 SwiftHook 库是如何“化腐朽为神奇”来完成这个“不可能任务”的。

在下一篇中我们将讨论如果不用 SwiftHook 库,自己撸码实现相似的功能会经历怎样的“磨难”。

那么,让我们马上开始本篇的 Hook 大冒险吧!Let’s go!!!😉


3. 第三方解决之道 SwiftHook 凭什么可以?

SwiftHook 库是一个 Swift 语言中通用 Hook 功能的解决方案。它在 github 中的地址为:

在这里插入图片描述


想要了解更多 SwiftHook 库使用案例的小伙伴们,请移步我下面的博文一探究竟:


好奇的我们迫不及待的想知道:如果用 SwiftHook 库实现之前的代码也会“死得很惨”吗?

class func tryHookNSObjectInit2() {
   
    let oldInitSel = #selector(NSObject.init)
    
    _ = try! hookAfter(targetClass: NSObject.self, selector: oldInitSel) {
    obj, sel in
        let address = Unmanaged.passRetained(obj).toOpaque()
        print

最近更新

  1. TCP协议是安全的吗?

    2024-03-21 18:36:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-21 18:36:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-21 18:36:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-21 18:36:02       18 阅读

热门阅读

  1. 第2章 团队

    2024-03-21 18:36:02       18 阅读
  2. c++ 模拟 三维数组输入 string转化为int

    2024-03-21 18:36:02       21 阅读
  3. 如何查看 MySQL 数据库中某张指定表的具体大小

    2024-03-21 18:36:02       19 阅读
  4. python之列表遍历

    2024-03-21 18:36:02       17 阅读
  5. leetcode-键盘行

    2024-03-21 18:36:02       21 阅读