bin graph
1.0.0
このプログラムは、バイナリファイルのさまざまな領域を視覚化する簡単な方法を提供します。
これらは、このプロジェクトに影響を与えたいくつかの参考文献です。
より専門的なアプローチに興味がある場合は、次のリンクをご覧ください。
このプログラムは、画像をエクスポートするためのlibpngに依存します。パッケージマネージャーからインストールします。
# Arch-based distros
pacman -S libpng
# Gentoo
emerge media-libs/libpngすべての依存関係がインストールされたら、プログラムをコンパイルします。
git clone https://github.com/8dcc/bin-graph
cd bin-graph
makeシステムにインストールする場合は、次のコマンドを実行します。
sudo make install出力画像で入力バイナリがどのように表現されるかを決定するさまざまなグラフモードがあります。説明を含むフルモードリストは、プログラムのhelpコマンドで見つけることができます。
bin-graph --help
# Usage:
# ./bin-graph [OPTION...] INPUT OUTPUT.png
#
# ...このプロジェクトには、bin-graph-section.shスクリプトも含まれています。 readelfとgrepを使用して、指定された領域のオフセットとサイズを見つけ、 bin-graphの--offset-*引数としてそれを使用します。セクション名の後の追加オプションはbin-graphに渡されます。
./bin-graph-section.sh SECTION [OPTION...] INPUT OUTPUT.png
# ...プログラムの各部分を、より多くのメンテナビリティを可能にし、拡大しやすくするために、可能な限りモジュールで独立したものにしようとしました。
これは、バイナリから画像を生成するための基本的なプロセスです。
read_file関数を使用して、入力ファイルからバイト配列として読み取られます。Color構造の単なる配列であるImage構造に変換されます。プログラムモード( --modeパラメーターで上書きされている可能性があります)は、どのimage_*関数が使用されるかを決定します。これらのimage_*関数は、image.cで定義されています。利用可能なモードの詳細については、使用法とモードを参照してください。Image構造は、image.cで定義されているimage2png関数を持つPNGファイルに変換されます。./bin-graph --mode grayscale bin-graph examples/grayscale.png
./bin-graph --mode ascii bin-graph examples/ascii.png
./bin-graph --mode entropy --transform-squares 16 bin-graph examples/entropy-squared.png
# Only the .text section of the ELF file
./bin-graph-section.sh .text --mode histogram bin-graph examples/histogram.png
# Only the .rodata section of the ELF file
./bin-graph-section.sh .rodata --mode bigrams bin-graph examples/rodata-bigrams.png
./bin-graph --mode dotplot --zoom 1 --offset-start 5000 --offset-end 5500 input.wav examples/dotplot.png