You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在macOS的arm64e进程中注入dylib并执行已编译代码

Frida 支持原生dylib加载,完全匹配你的需求

你对Frida的认知有偏差,它的JavaScript交互能力只是上层封装,底层本身就支持直接注入已编译的arm64e架构dylib到目标进程:

  • 只需要调用Module.load()接口传入dylib的本地绝对路径,Frida就会自动在目标进程空间完成dylib的加载、符号重绑定全流程,最终执行效果和你原来用mach_inject注入完全一致
  • 你原有dylib的业务代码不需要做任何修改,仅需通过Frida的基础注入能力触发加载即可,后续逻辑完全走原生代码的执行流程

基于原生Mach API自行实现arm64e适配

如果你不想引入Frida的依赖,也可以基于苹果公开的Mach API自行实现注入逻辑,和mach_inject的核心逻辑一致,仅需额外适配arm64e的PAC(指针验证机制):

  • 第一步通过task_for_pid()获取目标进程的task端口,该操作需要关闭SIP,或者给你的工具授予com.apple.security.cs.debugger调试权限
  • 在目标进程的地址空间中分配可读写内存,写入你的dylib的本地存储路径
  • 调用thread_create_running()在目标进程内创建新线程,线程入口指向系统dlopen的地址,传入你写入的dylib路径作为参数,需要注意的是arm64e架构下要使用ptrauth_sign_unauthenticated等系统接口给函数指针添加PAC签名,绕过指针校验逻辑
  • 现有多个开源注入类项目已经完成了arm64e的适配,你可以参考相关实现改造自己的原有工具

针对Dock进程的轻量免注入方案

如果你的工具面向普通用户发布,不想强制要求用户关闭SIP,还可以用环境变量劫持启动的方式实现dylib加载:

  • 修改Dock进程对应的启动plist配置,添加DYLD_INSERT_LIBRARIES环境变量指向你的dylib路径
  • 重启Dock后系统会自动加载你的dylib,不需要做线程创建、内存写入这类注入操作,兼容性更强,适配全系列Apple Silicon设备

内容的提问来源于stack exchange,提问作者Bri Bri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:15:03