Ce programme fournit un moyen simple de visualiser les différentes régions d'un fichier binaire.
Ce sont quelques références qui ont inspiré ce projet:
Si vous êtes intéressé par des approches plus professionnelles, consultez les liens suivants:
Le programme dépend de libpng pour l'exportation de l'image. Installez-le à partir de votre gestionnaire de packages.
# Arch-based distros
pacman -S libpng
# Gentoo
emerge media-libs/libpngUne fois toutes les dépendances installées, compilez le programme.
git clone https://github.com/8dcc/bin-graph
cd bin-graph
makeSi vous souhaitez l'installer sur votre système, exécutez la commande suivante.
sudo make install Il existe différents modes graphiques qui déterminent comment le binaire d'entrée est représenté dans l'image de sortie. La liste des mode complètes avec leurs descriptions peut être trouvée avec la commande help du programme.
bin-graph --help
# Usage:
# ./bin-graph [OPTION...] INPUT OUTPUT.png
#
# ... Ce projet comprend également un script bin-graph-section.sh. Il utilise readelf et grep pour trouver le décalage et la taille de la région spécifiée, et l'utilise comme arguments --offset-* pour bin-graph . Des options supplémentaires après le nom de la section seront transmises à bin-graph .
./bin-graph-section.sh SECTION [OPTION...] INPUT OUTPUT.png
# ...J'ai essayé de faire chaque partie du programme aussi modulaire et indépendant que possible, pour plus de maintenabilité et pour une expansion plus facile.
Il s'agit du processus de base pour générer une image à partir d'un binaire.
read_file , définie dans read_file.c.Image , qui n'est qu'un tableau de structures Color RVB, ainsi que ses dimensions. Le mode de programme (qui aurait pu être écrasé avec le paramètre --mode ) détermine la fonction image_* utilisée. Ces fonctions image_* sont définies dans image.c. Pour plus d'informations sur les modes disponibles, consultez l'utilisation et les modes.Image est convertie en un fichier png avec la fonction image2png , définie dans 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