バイナリデータを扱うためのコマンドを身につけていきたいので、自分なりのコマンド集としてまとめます。
今後も更新していく予定です。
バイナリ全般
hexdump
16 進数などのダンプを表示する
hexdump -C <file>
コンパイラ
gcc
内部で cc1 や as、collect2 (ld) などを扱うコンパイラ・ドライバ
gcc -o hello hello.c
オプション
- -Wall … 警告オプションを全て有効化
- -v … 詳細を出力
- -c … リンクしない
オブジェクトファイル
objdump
オブジェクトファイルの情報を表示する
objdump -h <file>
オプション
- -h … セクション情報を表示
- -p … プログラム・ヘッダを表示
- —all-headers (-x) … すべてのヘッダ情報を表示
- -d … 逆アセンブル
nm
シンボルの一覧を表示する
nm <file>
objcopy
オブジェクトファイルのコピーや変換を行う
ELF
readelf
ELF に関する情報を表示する
readelf -h <file>
- -h … ELF ヘッダを表示
- -S … セクションの一覧を表示
- -x <セクション番号> … セクションの内容を表示
- -l … プログラム・ヘッダを表示
- -s … シンボル・テーブルを表示
- -r … 再配置テーブルを表示
コアダンプの出力について
Ubuntu 20.04 では、デフォルトの設定ではユーザが実装したアプリケーションのコアダンプが出力されない。
コアダンプを出力したい場合は、例えば以下のようなコマンドを実行する必要がある。
sudo bash -c "echo 'core.%e.%p' > /proc/sys/kernel/core_pattern"
ulimit -c unlimited
参考