记录proxychains4在m1使用homebrew安装无法正常使用问题

用Homebrew安装的proxychians是无法在m1上正常使用的。所以需要使用github仓库的版本到本地进行编译。

1
2
git clone https://github.com/rofl0r/proxychains-ng
cd proxychains-ng

0x00 SIP问题

由于macos在12.3更新之后,会开启一个sip功能,叫系统完整性保护。这个功能在开启的情况下是无法正常使用proxychains的。如果你并没有进行过任何操作,且你的Macos系统在12.3以上,那么大概率是开启状态。

如果是m系列mbp,那么可以在电脑关机之后,长按开机键直到可以选择进入恢复模式。在恢复模式启动终端。

如果是i系列mbp,那么是电脑关机之后,按下开机键的同时按下command+r进入恢复模式。

输入如下命令进行关闭

1
csrutil disable

使用csrutil status查看sip是否处于关闭状态

后续开启也是一样的进入恢复模式,然后键入以下命令

1
csrutil enable

0x01 libproxychains4.dylib不兼容

解决了sip问题,就可以顺利地在第一次执行proxychains4命令之后遇到***terminating because inserted dylib ‘/usr/local/lib/libproxychains4.dylib’ could not be loaded: tried: ‘/usr/local/lib/libproxychains4.dylib’ (mach-o file, but is an incompatible architecture (have ‘arm64e’, need ‘’))***这行报错了。

如下

网上有个方案是使用arm64e编译出libproxychains4.dylib之后,再使用arm64编译安装再替换那个组件。但是在我这里并没有起作用。最后我参考了[issue #451][https://github.com/rofl0r/proxychains-ng/issues/451]的解决方案,即编译出x86_64以及arm64e两个版本直接进行安装。顺利解决。在我的印象里,我只有这行命令的操作起了作用,其余操作均没有任何作用。

git clone到本地之后,使用命令进行编译即可

值得补充的一点是,我看到网上相关叙述说存在proxychains4的一些版本中的config.mask中第七行以及第八行的bin/lib两个目录的指向会指向到一个苹果保护目录,在苹果的保护目录中,/usr/local/这个目录并非保护目录,所以可以放心写入

所以需要这两个字段指向的目录为如下(或者也可以指到其他非保护目录,都可以应该)

1
2
bindir=/usr/local/bin
libdir=/usr/local/bin

编译命令

1
2
3
4
make clean
CFLAGS="-arch x86_64 -arch=arm64e" LDFLAGS="-arch x86_64 -arch=arm64e" ./configure
make install
make install-config #安装相关配置文件,即/usr/local/etc/proxychains.conf文件

于是可以顺利正常使用。