โปรแกรมนี้ให้วิธีง่ายๆในการแสดงภาพภูมิภาคต่าง ๆ ของไฟล์ไบนารี
นี่คือการอ้างอิงบางส่วนที่เป็นแรงบันดาลใจให้โครงการนี้:
หากคุณสนใจวิธีการระดับมืออาชีพมากขึ้นลองดูลิงค์ต่อไปนี้:
โปรแกรมขึ้นอยู่กับ 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 เพื่อค้นหาออฟเซ็ตและขนาดของภูมิภาคที่ระบุและใช้เป็นอาร์กิวเมนต์ --offset-* สำหรับ bin-graph ตัวเลือกเพิ่มเติมหลังจากชื่อส่วนจะถูกส่งไปยัง bin-graph
./bin-graph-section.sh SECTION [OPTION...] INPUT OUTPUT.png
# ...ฉันพยายามทำให้แต่ละส่วนของโปรแกรมเป็นแบบแยกส่วนและเป็นอิสระมากที่สุดเพื่อการบำรุงรักษามากขึ้นและเพื่อการขยายตัวที่ง่ายขึ้น
นี่คือกระบวนการพื้นฐานสำหรับการสร้างภาพจากไบนารี
read_file ซึ่งกำหนดไว้ใน read_file.cImage ซึ่งเป็นเพียงอาร์เรย์ของโครงสร้าง Color RGB พร้อมกับขนาดของมัน โหมดโปรแกรม (ซึ่งอาจถูกเขียนทับด้วยพารามิเตอร์ --mode ) กำหนดฟังก์ชั่น image_* ที่ใช้ ฟังก์ชั่น image_* เหล่านี้ถูกกำหนดไว้ใน image.c สำหรับข้อมูลเพิ่มเติมเกี่ยวกับโหมดที่มีให้ดูการใช้งานและโหมดImage จะถูกแปลงเป็นไฟล์ PNG ด้วยฟังก์ชั่น image2png ที่กำหนดไว้ใน 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