基于汇编实现 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)。

相关推荐
UnicornDev8 分钟前
从零开始学iOS开发(第四十四篇):App Store 提交与审核 —— 让应用走向世界
macos·objective-c·cocoa
MonkeyKing37 分钟前
iOS dyld加载流程与App启动原理(pre-main阶段)详解
ios
MonkeyKing39 分钟前
iOS类加载全解析:map_images、load_images、initialize调用时机
ios
Byron Loong44 分钟前
【逆向】AT Hook 与 Inline Hook 对比
c语言·汇编·c++
美狐美颜SDK开放平台2 小时前
什么是美颜SDK?高并发场景下的企业级美颜SDK如何开发?
android·人工智能·ios·美颜sdk·第三方美颜sdk·视频美颜sdk
90后的晨仔2 小时前
SwiftUI 数据持久化完全指南:从偏好设置到企业级存储
ios·axios
90后的晨仔3 小时前
SwiftUI 高级特性第3章:环境与偏好设置
ios
晴天无痕3 小时前
intel过来的xcode项目在M芯片电脑无法显示模拟器的问题日
ide·macos·xcode
Digitally4 小时前
如何连接安卓手机到 Mac?2026 年 7 种可靠方法
android·macos·智能手机
Digitally4 小时前
如何将短信从 iPhone 传输到 Mac?
macos·ios·iphone