All Articles

バイナリを扱うための自分用コマンド集

バイナリデータを扱うためのコマンドを身につけていきたいので、自分なりのコマンド集としてまとめます。

今後も更新していく予定です。

バイナリ全般

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

参考

関連書籍

リンカ・ローダ実践開発テクニック