
बाइनरी विज़ुअलाइज़र और ट्राइएज टूल — एक साझा एड्रेस-स्पेस मॉडल पर एन्ट्रॉपी, बाइट-क्लास और हिल्बर्ट सतहें, डॉट प्लॉट और कंट्रोल-फ्लो ग्राफ़।
बाइनरी विज़ुअलाइज़र और ट्रायेज टूल: एक साझा एड्रेस-स्पेस मॉडल पर जुड़े इंटरैक्टिव दृश्य (एन्ट्रॉपी, हिस्टोग्राम, इमेज/डॉट-प्लॉट सतहें, कंट्रोल-फ्लो ग्राफ़)।
pipx install binviz && binviz serve
एक फ़ाइल खोलें और हर दृश्य एक ही एड्रेस स्पेस को देख रहा है। एक में रेंज चुनें और बाकी उसका अनुसरण करते हैं — उद्देश्य यह है कि "यह क्षेत्र क्या है" का उत्तर एक साथ कई तरीकों से देखकर पाया जाए।
binviz model LIEF के माध्यम से ELF/PE/Mach-O को क्षेत्रों, प्रतीकों और ऑफ़सेट↔वर्चुअल-एड्रेस मैपिंग में पार्स करता है, जिसमें गैप और ओवरले शामिल होते हैं। दोषपूर्ण इनपुट विफल होने के बजाय रॉ मॉडल पर वापस आ जाता है।binviz triage बताता है कि फ़ाइल कैसी दिखती है और क्यों; UI में प्रत्येक निष्कर्ष उन बाइट्स पर क्लिक करता है जिनसे यह प्राप्त हुआ था।UI पाँच वर्कस्पेस है — Overview, Bytes, Patterns, Code, और All — एक ही चयन पर। केवल स्थैतिक विश्लेषण: नमूनों को पार्स किया जाता है, कभी निष्पादित नहीं किया जाता।




उसी कोड द्वारा रेंडर किया गया जो UI चित्रित करता है, सीधे CLI से — python docs/make_plates.py के साथ पुनर्जनित करें।
| एक स्थैतिक बाइनरी | वही प्रोग्राम, UPX-पैक्ड |
|---|---|
![]() | ![]() |
| कोड, स्ट्रिंग्स और पैडिंग दृश्य क्षेत्रों में अलग हो जाते हैं। | संरचना एक समान शोर में ढह जाती है — पैकिंग का संकेत। |
![]() | ![]() |
| विंडोड एन्ट्रॉपी बैंडेड और कम रहती है। | सपाट और उच्च, अनपैकिंग स्टब तक। |
| सही रो स्ट्राइड | गलत रो स्ट्राइड |
|---|---|
![]() | ![]() |
वही बाइट्स, एक संख्या अलग। यही कारण है कि स्ट्राइड सुझावक मौजूद है: गलत रो स्ट्राइड एक फ़ोटोग्राफ़ को विकर्ण शोर में बदल देता है, और आप निष्कर्ष निकालते हैं कि कोई फ़ोटोग्राफ़ नहीं है।
ARCHITECTURE.md बताता है कि यह कैसे बनाया गया है: क्या शामिल है, वह ब्रांडिंग जो हर सतह विरासत में लेती है, वे परंपराएँ जिनका एक नई स्क्रीन को पालन करना चाहिए, और वे सीमाएँ जो जानबूझकर हैं। SECURITY.md सुरक्षा स्थिति है।
python -m venv .venv
# -c उन सटीक संस्करणों को पिन करता है जिनके विरुद्ध सुइट हरा है; pyproject.toml
# रेंज प्रकाशित करता है, इसलिए इसके बिना आपको वही मिलता है जो आज हल होता है
.venv/Scripts/pip install -e ".[dev]" -c constraints-dev.txt # POSIX: .venv/bin/pip
# ग्राउंड-ट्रुथ कॉर्पस बनाएं (ziglang pip पैकेज से zig cc का उपयोग करता है;
# PATH में UPX चाहिए, $UPX में, या corpus/tools/upx-*/ में अनज़िप किया हुआ)
make -C corpus # या: python corpus/build.py
# थ्रेशोल्ड मापे जाते हैं, कभी हार्डकोड नहीं (ARCHITECTURE.md §2.1 देखें)
python corpus/calibrate.py # corpus/calibration.json लिखता है
pytest # कार्यात्मक सुइट
pytest -m perf -s # 100 MB प्रदर्शन लक्ष्य
binviz probe corpus/out/hello_O2
binviz model corpus/out/hello_upx
binviz signal corpus/out/hello_upx --name entropy_4096 --png out.png
binviz hist corpus/out/ramp16.bin --n 2 --dtype u16le --png bigram.png
# सतहें: -p सतह पैरामीटर पास करता है
binviz surface corpus/out/hello_static --name hilbert -p mode=byteclass --png h.png
binviz surface corpus/out/rgb_raw.bin --name image -p mode=rgb8 -p width=320 --png i.png
binviz surface corpus/out/repeats.bin --name dotplot -p mode=exact --png d.png
binviz stride corpus/out/bayer_raw.bin --mode bayer_RGGB_RGB_12
# कोड
binviz disasm corpus/out/hello_O2 --limit 20
binviz functions corpus/out/hello_static --sort size
binviz cfg corpus/out/hello_O2 --func main --dot main.dot
# निर्णय, और क्यों
binviz triage corpus/out/hello_upx
binviz serve # 127.0.0.1:8000
यह एक सत्र टोकन वाला URL प्रिंट करता है — उसे खोलें। हर /api रूट को टोकन चाहिए, क्योंकि "यह केवल localhost पर सुनता है" किसी अन्य टैब में एक वेब पेज के विरुद्ध बचाव नहीं है, जो किसी भी अन्य ओरिजिन की तरह 127.0.0.1 तक पहुँचता है। SECURITY.md में तर्क है।
फ़ाइल एक्सेस --root (डिफ़ॉल्ट: कार्यशील निर्देशिका) तक सीमित है, इसलिए इसके बाहर के पथ अस्वीकार कर दिए जाते हैं।
सभी चार में एक फ़्लैग और एक पर्यावरण चर है, और सभी चार एक स्थानीय कॉलर को आपके इच्छित से अधिक उपभोग करने से रोकने के लिए मौजूद हैं। डिफ़ॉल्ट एक लैपटॉप के लिए चुने गए हैं; यदि आपकी मशीन बड़ी है तो उन्हें बढ़ाएँ।
| फ़्लैग | Env | डिफ़ॉल्ट | यह क्या सीमित करता है |
|---|---|---|---|
--max-cache BYTES | BINVIZ_MAX_CACHE | 5 GiB | कैश किए गए विश्लेषणों का कुल आकार। इससे अधिक होने पर, सबसे कम उपयोग किए गए प्रविष्टियाँ हटा दी जाती हैं — कभी भी वह नहीं जो विश्लेषित या देखा जा रहा है। |
--max-upload BYTES | BINVIZ_MAX_UPLOAD | 8 GiB | स्वीकृत सबसे बड़ा अपलोड। |
--max-analyses N | — | 4 | एक साथ विश्लेषण; इससे अधिक पर /api/open 503 लौटाता है। |
--root DIR | — | cwd | वह निर्देशिका जिससे सर्वर फ़ाइलें पढ़ सकता है। |