在 macOS 12 (M1 Max) 上使用 Apple Silicon支持編譯proxychains-ng后,我發現二進制檔案立即被作業系統終止。直覺促使我認為存在某種許可問題,但到目前為止我一直無法隔離這樣的問題。即使在運行時,它甚至都不會到達初始斷點。--fat-binary-m1 lldb
我將分享 macOS 中相關的 shell 結果,這導致我希望有人可能已經看到類似的東西或可能知道發生了什么:
$ git clone https://github.com/rofl0r/proxychains-ng.git
$ cd proxychains-ng
$ CFLAGS="-g3 -O0" ./configure --fat-binary-m1 --sysconfdir=/opt/homebrew/etc/
...
$ make
$ ./proxychains4
fish: Job 1, './proxychains4' terminated by signal SIGKILL (Forced quit)
$ ./proxychains4 ping 1.1.1.1
fish: Job 1, './proxychains4 ping 1.1.1.1' terminated by signal SIGKILL (Forced quit)
$ lldb proxychains4 ping 1.1.1.1
(lldb) target create "proxychains4"
Current executable set to '~/src/proxychains-ng/proxychains4' (arm64e).
(lldb) settings set -- target.run-args "ping" "1.1.1.1"
(lldb) b main
Breakpoint 1: where = proxychains4`main 60 at main.c:69:8, address = 0x0000000100003578
(lldb) run
error: process exited with status -1 (no such process.)
為了更好地衡量,我已驗證 SIP 和 Gatekeeper 已關閉:
$ csrutil status
System Integrity Protection status: disabled.
$ spctl --status
assessments disabled
在試圖深入挖掘以查看是否有觸發殺死的系統呼叫時,我似乎無處可去。只是沒有讓我ktrace到任何地方。dtruss
對這里發生的事情有任何想法嗎?
uj5u.com熱心網友回復:
我想我知道發生了什么。您已經構建了一個包含 arm64e 切片的通用二進制檔案。由于 arm64e ABI 還不穩定,只有系統二進制檔案可以使用 arm64e ABI。在終端中,系統只是忽略 arm64e 切片,因為它不允許運行,而是運行 arm64 切片。但是 lldb 沒有那么嚴格,它會嘗試運行 arm64e 切片,但失敗了。您可以通過不構建 arm64e 切片(無論如何都不會運行)來解決此問題。或者您可以target create -arch arm64 proxychains4告訴 lldb 運行 arm64 切片。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/491896.html
上一篇:VBA宏-ok除錯ko運行時
