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

相关推荐
天庭鸡腿哥10 小时前
IOS上收费的软件,Android上免费!
macos·visual studio·everything
天庭鸡腿哥11 小时前
大小不足1M,干翻Windows!
microsoft·macos·visual studio·everything
fengye20716112 小时前
板凳----------(枯藤 )vs2026+win10(第六章-2)
汇编
杭城小刘18 小时前
Weex 底层原理与 APM
ios·前端框架·weex
怎么没有名字注册了啊19 小时前
(Mac)Visual Studio Code 配置 C/C++运行环境
c++·vscode·macos
耘田20 小时前
一块移动硬盘支持Mac备份和通用文件存储
macos
2501_9240641120 小时前
2025年移动应用渗透测试流程方案及iOS安卓测试方法对比
android·ios
2501_9181269120 小时前
用Python开发一个三进制程序开发工具
开发语言·汇编·python·个人开发
鼹鼠SDN1 天前
【保姆教程】iPhone、iPad上玩电脑游戏 异地串流
ios·iphone·ipad·moonlight·sunshine·串流·科技数码
黎雁·泠崖1 天前
Java底层探秘进阶:JIT汇编逐行拆解!Java方法栈帧与C语言深度对标
java·c语言·汇编