基于汇编实现 hook objc_msgSend,统计方法耗时的方案

文章目录


简介

首先,iOS 中进行 hook 的方案有多种,这里使用的是 Facebook 的 fishhook 库:Github:fishhook

hook objc_msgsend ,货拉拉技术团队已有完善的方案:基于汇编实现objc_msgSend hook方法耗时的方案

另外,它们还开源了基于fishhook、汇编 hook objc_msgsend 并支持方法耗时可视化的项目:hll-wp-guldan-ios

接入

首先在 Podfile 中添加:

cpp 复制代码
pod 'Guldan', :git => "https://github.com/HuolalaTech/hll-wp-guldan-ios.git"

然后设置要监控的代码片段:

objectivec 复制代码
[GDNOCMethodTimeProfiler start];
// 下载图片
[self downloadImages];
[GDNOCMethodTimeProfiler stop];
[GDNOCMethodTimeProfiler handleRecordsWithComplete:^(NSArray<NSString *> * _Nonnull filePaths) {
       // file path
       for (NSString *filePath in filePaths) {
             NSLog(@"File path: %@", filePath);
         }
   }];

从控制台拿到 path:

最后将 path 的文件拖入 chrome://tracing/ :

经测试,模拟器(arm64)和真机均支持,不支持模拟器(x86_64)。

相关推荐
MonkeyKing715515 小时前
iOS Non-pointer isa 结构解析与优化
ios·objective-c
MonkeyKing715516 小时前
iOS dyld加载流程与App启动原理(pre-main阶段)详解
ios·objective-c
游戏开发爱好者817 小时前
使用Fiddler设置HTTPS抓包诊断Power Query网络问题
android·ios·小程序·https·uni-app·iphone·webview
唐诺18 小时前
iOS UI 开发完全指南:UIKit 与 SwiftUI
ui·ios·swiftui
一只AI打工虾的自我修养19 小时前
DeepSeek V4.1 vs Ollama vs LocalClaw:Mac本地AI工具横评
人工智能·windows·macos
MonkeyKing19 小时前
iOS 循环引用深度解析:delegate/block/NSTimer/嵌套闭包
ios
泉木19 小时前
KVO 详解 —— iOS/ObjC 完整学习指南
ios·objective-c
拂晓 AI 编程19 小时前
Mac 本地跑 GUI Agent:4B 模型实现云端效果
macos
MonkeyKing19 小时前
iOS AutoreleasePool 深度解析:原理、Page结构与释放时机
ios
薛定猫AI19 小时前
【深度解析】Gemma Chat:基于 MLX 的 Mac 离线 Coding Agent 架构与实战
macos·架构