我有一个小项目,它使用 Jonathan 'Wolf' Rentzsch 的 mach_override() 在 MAC 中实现函数挂钩:https ://github.com/rentzsch/mach_override
我已经从 mac 钩住了 kextstat 进程的功能之一。
所以当我执行
$kextstat
OSX 正在杀死这个进程,说下面的错误:
代码签名:进程 2211[kextstat]:从文件“/private/var/db/dyld/dyld_shared_cache_x86_64h”中的偏移量 0xca53000 拒绝地址 0x7fff5132d000 处的无效页面(cs_mtime:1531207073.366350606 == mtime:1531207073.3066350signed :0 nx:0 wpmapped:1 脏:1 深度:2)
我的动态库是代码签名的。在我最初的观察中,我可以得出结论 mach_override() 函数在以下代码中失败:
atomic_mov64((uint64_t *)originalFunctionPtr, jumpRelativeInstruction);
上面的代码可以找到:mach_override.c:342 https://github.com/rentzsch/mach_override