在iOS上用过frida stalker的都知道,稍稍复杂一点的情况就经常噶,通常只能trace几百行到几万行之间,非常不稳定,如果使用lldb trace可能有反调试问题,那么有没有一款trace工具能像frida一样简单使用呢, 那就是 QBDI
关于QBDI已经有很多帖子详细介绍了,这里就不班门弄斧了。
在 3cfK9s2c8@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成功,然而这只是解决了最简单的问题,这才刚刚开始..

几分钟后,下一个错误出现了, 解决这个问题需要在主CMakelists将 set(CMAKE_ASM_FLAGS "-arch ${ARM_ARCH}")修改为 set(CMAKE_ASM_FLAGS "-arch arm64}"),这里就不考虑arm版本了

接着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指定的路径
冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。
最后于 2025-9-22 13:34
被just赋予编辑
,原因: