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

相关推荐
Moonnnn.10 分钟前
51单片机——汇编工程建立、仿真、调试全过程
汇编·笔记·嵌入式硬件·学习·51单片机
SunshineBrother2 小时前
shell脚本,怎么查找项目中的重复图片
ios
月未央2 小时前
HarmonyOS Next 开发系列:Provider和Consumer状态修饰器实践
ios·harmonyos
irisMoon062 小时前
mac本地代理nginx,解决跨域问题
linux·nginx·macos
Macle_Chen13 小时前
Mac服务器上创建Docker并安装宝塔环境
服务器·macos·docker
AskHarries18 小时前
Spring Boot中对接Twilio以实现发送验证码和验证短信码
ide·macos·xcode
禾仔仔18 小时前
RISC-V汇编学习(三)—— RV指令集
汇编·risc-v·指令集
北京自在科技21 小时前
【Find My功能科普】防盗黑科技如何改变生活?
科技·ios·生活·findmy
存内计算开发者1 天前
VLSI 2024论文详解:具有紧凑型MAC-SIMD和自适应竖式加法数据流的1T1C DRAM存内计算加速器Dyamond
数据结构·macos·深度优先·边缘计算·数据库架构·剪枝·迭代加深
黄豆匿zlib1 天前
Python怎样安装,Windows/Mac/Linux系统安装教程
windows·python·macos