在 linux 下,用 readelf 來看 ELF(linux 下目標文件的格式) 文件頭部或者其它各 section 的內(nèi)容,用 objdump 來對指定的內(nèi)容(.text, .data等)進行反匯編。
但是mac os X下沒有這兩個命令,可以用 brew 來安裝。
使用命令
brew install binutils
然后使用 greadelf 和 gobjdump 命令。
安裝完成后,出現(xiàn)下列提示
binutils is keg-only, which means it was not symlinked into /usr/local,
because because Apple provides the same tools and binutils is poorly supported on macOS.
If you need to have binutils first in your PATH run:
echo 'export PATH="/usr/local/opt/binutils/bin:$PATH"' >> ~/.zshrc
For compilers to find binutils you may need to set:
export LDFLAGS="-L/usr/local/opt/binutils/lib"
export CPPFLAGS="-I/usr/local/opt/binutils/include"
意思就是 binutils 并沒有符號鏈接,并且 macOS 對他的支持并不好。
在使用之前,首先需要配置的路徑,能正確鏈接,根據(jù)提示操作就可以了。
首先
echo 'export PATH="/usr/local/opt/binutils/bin:$PATH"' >> ~/.zshrc
然后執(zhí)行 source 命令讓修改生效???/p>
source ~/.zshrc
可以打開 .zshrc 文件查看,在文件末尾有可以看到新增
export PATH="/usr/local/opt/binutils/bin:$PATH"
后面依次執(zhí)行下面的命令就可以了。
export LDFLAGS="-L/usr/local/opt/binutils/lib"
export CPPFLAGS="-I/usr/local/opt/binutils/include"
下面就可以使用 gobjdump 和 greadelf 命令了。
或者 objdump 和 readelf 也是可行的 ??
? ~ gobjdump -v
GNU objdump (GNU Binutils) 2.31.1
Copyright (C) 2018 Free Software Foundation, Inc.
這個程序是自由軟件;您可以遵循 GNU 通用公共授權版本 3 或
(您自行選擇的) 稍后版本再發(fā)布它。
這個程序不含任何擔保