解决 Frida 无法在M芯片上运行
Failed to attach: unexpected error while starting thread (thread_create returned '(os/kern) invalid argument')
Failed to attach: unexpected error while mapping dylib (mach_vm_write(segment) returned '(os/kern) protection failure')
Google搜索只发现两种方案:
1. 禁用SIP
2. sudo nvram boot-args="-arm64e_preview_abi". 设置之后重启
这两种方案都尝试了,然后还是发现无法hook。 那么只能直接瞎几把尝试了, 看看能不能摸出个什么花样来。。。
本人查看了本机python版本:
python Version: Python 3.13.2
指令集: Non-fat file: /usr/local/bin/python3 is architecture: x86_64
本人查看了Frida的指令集:
➜ frida lipo -info ./_frida.abi3.so
Non-fat file: ./_frida.abi3.so is architecture: x86_64
非常棒: 都是x86, 它们都能运行,说明本机终端使用Rosetta模式。
➜ frida lipo -info /usr/local/bin/nginx
Non-fat file: /usr/local/bin/nginx is architecture: x86_64
都是x86指令错误: 线程相关
➜ frida lipo -info /Applications/Lark.app/Contents/MacOS/Feishu
Non-fat file: /Applications/Lark.app/Contents/MacOS/Feishu is architecture: arm64
得到内存保护的错误

于是呼, 大胆猜测:
目标程序是x86: 报线程相关错误
目标程序是arm64: 报内存相关错误
开始验证:
用GO语言写一个hello world程序, 每5秒打印一次hello world。 编译出了2个版本。

x86_64:

arm64:

猜想是对的。 得出结论,x86的Frida不可能在M芯片的电脑工作!
这个全网应该就我是一个发现这个问题的吧, 我翻阅整个互联网, 全是只抛出问题, 没有能真正解决问题的答案!
太他妈狗血了!
==============参数解决这个问题============================
卸载python3.13. 开始换python3.13 arm64版本:
重新安装Frida arm64版本:

成功hook arm64:

hook x86程序,无法hook:
Failed to attach: process is dead

不过再也不是内存错误或者线程错误了. 思考了一分钟,这个问题可能解决不了,如果有大神级人物知道怎么解决, 麻烦告知下,再次表示感谢!
因为x86程序想要在M芯片上运行必须经过Rosetta转译运行, 在github搜索相关错误, 发现很多人都遇到了这个错误, 但是仅仅是遇到了,并没有解决方案!

到这里, Frida在Mac上运行也该告一断落了,
我觉得特别好笑, 现在新老应用程序都在支持M芯片的电脑运行, 开发商希望对用户友好,但是也带来了安全风险。

浙公网安备 33010602011771号