Este programa proporciona una forma simple de visualizar las diferentes regiones de un archivo binario.
Estas son algunas referencias que inspiraron este proyecto:
Si está interesado en enfoques más profesionales, consulte los siguientes enlaces:
El programa depende de libpng para exportar la imagen. Instálelo desde su administrador de paquetes.
# Arch-based distros
pacman -S libpng
# Gentoo
emerge media-libs/libpngUna vez que se instalen todas las dependencias, compile el programa.
git clone https://github.com/8dcc/bin-graph
cd bin-graph
makeSi desea instalarlo en su sistema, ejecute el siguiente comando.
sudo make install Hay varios modos gráficos diferentes que determinan cómo se representa el binario de entrada en la imagen de salida. La lista de modo completo con sus descripciones se puede encontrar con el comando help del programa.
bin-graph --help
# Usage:
# ./bin-graph [OPTION...] INPUT OUTPUT.png
#
# ... Este proyecto también incluye un script bin-grap-section.sh. Utiliza readelf y grep para encontrar el desplazamiento y el tamaño de la región especificada, y lo utiliza como argumentos --offset-* para bin-graph . Opciones adicionales después del nombre de la sección se pasarán al bin-graph .
./bin-graph-section.sh SECTION [OPTION...] INPUT OUTPUT.png
# ...Traté de hacer que cada parte del programa sea lo más modular e independiente posible, para una mayor capacidad de mantenimiento y para una expansión más fácil.
Este es el proceso básico para generar una imagen a partir de un binario.
read_file , definida en read_file.c.Image , que es solo una matriz de estructuras Color RGB, junto con sus dimensiones. El modo de programa (que podría haber sido sobrescribido con el parámetro --mode ) determina qué función image_* se utiliza. Estas funciones image_* se definen en Image.c. Para obtener más información sobre los modos disponibles, consulte el uso y los modos.Image se convierte en un archivo PNG con la función image2png , definida en Image.c../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