解决 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芯片的电脑运行, 开发商希望对用户友好,但是也带来了安全风险。
 

 

posted @ 2025-07-01 23:38  浪浪辛  阅读(93)  评论(0)    收藏  举报