iOS重学之启动优化(三)- Clang插桩

手机游戏开发者 2024-9-2 20:55:16 122 0 来自 中国
写在前面

在 上一篇文章iOS重学之启动优化(二)- 二进制重排 末了我们提出了一个题目:怎样正确获取应用启动时间的符号调用序次,本篇文章我们就来具体先容怎样通过Clang插桩来对全部的符号举行100%的Hook。
Clang插桩

LLVM内置了一个简单的代码覆盖率检测(SanitizerCoverage)。它在函数级、根本块级和边沿级插入对用户界说函数的调用,并提供了这些回调的默认实现。在认为启动竣事的位置添加代码,就可以或许拿到启动到指定位置调用到的全部函数符号。
LLVM官方文档 也具体先容了怎样利用Tracing PCs with guards来做到Hook全部的函数符号。
Tracing PCs with guards:
可以明白为跟踪代码实行逻辑的一个工具,Clang编译器就可以通过插桩来获取调用的符号序次。
Xcode设置

在项目Buiding Setting中Other C Flags内里添加 -fsanitize-coverage=trace-pc-guard标识,如下:


添加Hook代码

在项目内里添加如下两个函数:
起首导入头文件:
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2025-4-4 14:56, Processed in 0.183804 second(s), 33 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表