在 linux 下,用 readelf
来看 ELF(linux 下目标文件的格式) 文件头部或者其它各 section 的内容,用 objdump
来对指定的内容(.text, .data等)进行反汇编。
但是mac os X下没有这两个命令,可以用 brew 来安装。
使用命令
brew install binutils
然后使用 greadelf
和 gobjdump
命令。
安装完成后,出现下列提示
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 对他的支持并不好。
在使用之前,首先需要配置的路径,能正确链接,根据提示操作就可以了。
首先
echo 'export PATH="/usr/local/opt/binutils/bin:$PATH"' >> ~/.zshrc
然后执行 source
命令让修改生效。可
source ~/.zshrc
可以打开 .zshrc 文件查看,在文件末尾有可以看到新增
export PATH="/usr/local/opt/binutils/bin:$PATH"
后面依次执行下面的命令就可以了。
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 或
(您自行选择的) 稍后版本再发布它。
这个程序不含任何担保