论坛首页 安全工具分享区 阅读主题

[原创]iOS版本QBDI编译指南

214 浏览 11 回复
#1 楼主 2026-06-01 21:09:17
在iOS上用过frida stalker的都知道,稍稍复杂一点的情况就经常噶,通常只能trace几百行到几万行之间,非常不稳定,如果使用lldb trace可能有反调试问题,那么有没有一款trace工具能像frida一样简单使用呢, 那就是 QBDI关于QBDI已经有很多帖子详细介绍了,这里就不班门弄斧了。
在 d85K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6c8b7V1c8u0i4K6u0r3f1f1u0p5d9b7`.`. 的README中虽然写了支持IOS,但实际上只是在早期的几个版本支持arm版本,aarch64是不支持的,作者似乎也没有添加支持的打算, 网上也没有现成的
既然不会造轮子,那就只能修轮子了 :(这里用的是m1笔记本,先克隆到本地
cmake -DQBDI_PLATFORM=ios -DQBDI_ARCH=AARCH64 ..第一个错误意思很明显,去对应的CMakelists取消掉注释就行,


至于ios_AARCH64.s文件,可以将arm版本的修改成aarch64版本的就行,比如这样

第二个错误,操作也一样,将arm版本改成对应aarch64版本就行

最终cmake成功,然而这只是解决了最简单的问题,这才刚刚开始..
接着make又出现一个错误,这里只需要取其他路径复制一份头文件过来就行

下一个LLVM语法错误,这个错误只需要改成llvm::sys::Process::getPageSize().get()就行,并将block.size()改成block.allocatedSize()

最后一个链接问题,这里需要修改 src/Utility/CMakeLists.txt 将 elseif(QBDI_PLATFORM_OSX)改为elseif(QBDI_PLATFORM_OSX OR QBDI_PLATFORM_IOS)

看到这里似乎编译成功了,实际上没成功,这还是osx版本:(
第二次会出现很多看不懂的编译错误,这里简要说明为什么还会是osx版本,因为没有指定 CMAKE_OSX_SYSROOT 为iPhoneOS.platform, 实际上编译用的仍然是MacOSX.platform, 需要修改CMakelists文件,添加对应路径为xcrun -sdk iphoneos -show-sdk-path指定的路径


回复或点赞可查看完整内容

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-288569.htm
#2 2026-06-01 21:09:17
感谢分享
#3 2026-06-01 21:09:17
感谢分享
#4 2026-06-01 21:09:17
stalker 二改 ,也很稳定得
#5 2026-06-01 21:09:17
我来看看
#6 2026-06-01 21:09:17
支持下
#7 2026-06-01 21:09:17
我当时读了好几天才知道llvm-tblgen 是什么东西,要提前编译, android上面就很奇怪, 我确实看到生成了 android arm64的 tbgen 和 那个叫min-tbgen的东西

最后于 2025-9-23 11:52
被zhuzhu_biu编辑

,原因:
#8 2026-06-01 21:09:17
棕熊


支持下

大佬,就等你开源了
#9 2026-06-01 21:09:17
wx_插曲


stalker 二改 ,也很稳定得

饼哥号
#10 2026-06-01 21:09:17
777- 111
#11 2026-06-01 21:09:17
just赋予


大佬,就等你开源了

嘿嘿 先不开呢 让我自己把玩几天
#12 2026-06-01 21:09:17
mb_aoooaosd


饼哥号

树哥好

请登录后参与讨论

立即登录 注册账号