S myšlenkou na vytvoření tohoto projektu jsem si v hlavě hrál už několik let. Jako každý, kdo se věnuje nízkoúrovňovému softwarovému inženýrství nebo analýze malwaru, jsem byl neustále nucen listovat stohy dokumentace k Portable Executable (PE) formátu a složitě v nich dohledávat potřebné informace.
Pokud jste v této komunitě vyrůstali, pravděpodobně jste stejně jako já měli na stole vytištěný legendární referenční plakát PE formátu od OpenRCE.org ve formátu A3. Byla to skvělá pomůcka na svou dobu, ale dnešnímu formátu — s .NET hlavičkami, Control Flow Guard nebo x64 exception handlingem — už dávno nestačí.
Rozhodl jsem se proto vzít své dlouholeté osobní zápisky, výsledky vlastních pokusů a oficiální specifikace a přetavit je do moderní podoby. Výsledkem je plně interaktivní vizuální mapa PE hlaviček, která propojuje teorii s okamžitou prostorovou představou o struktuře souboru.
V čem je tento nástroj unikátní?
Nástroj je distribuován jako plně samostatný (standalone) HTML soubor. Běží 100% lokálně ve vašem prohlížeči, nevyžaduje žádnou instalaci, databázi ani připojení k internetu — včetně fontů, které jsou zabalené přímo v souboru. To z něj dělá ideálního společníka pro práci v izolovaných virtuálních strojích (air-gapped sandboxech) při analýze škodlivého kódu.
Hlavní funkce nástroje:
- Interaktivní mapování pozice: Kliknutím na jakýkoli člen struktury se v hexadecimálním pohledu okamžitě zvýrazní odpovídající bajty. Zároveň se zobrazí jeho přesný offset, velikost a případný vztah k jiné struktuře — to vám dá okamžitou prostorovou představu o tom, kde se v souboru nacházíte.
- Kompletní pokrytí formátu, ne jen základní hlavičky: Nejde jen o DOS/File/Optional Header. Nástroj mapuje přes čtyřicet struktur včetně exportů, importů, TLS, resource stromu, relokací, debug informací, .NET (COR20) hlavičky i x64 exception handlingu — a vizuálně demonstruje, jak jsou jejich vnitřní elementy a ukazatele vzájemně provázané.
- Živé kalkulačky, ne jen statický text: RVA↔VA převodník, bitové kalkulačky pro příznaky jako Characteristics nebo DllCharacteristics, a pět shrnujících bloků vysvětlujících klíčové mechanismy formátu (endianita, převod RVA/VA/offsetu, jak pole poznají svůj konec, jak fungují relokace, a jak PE soubor prochází celým načítáním od prvního bajtu po skok na entry point).
- Absolutní soukromí a rychlost: Žádná data neodcházejí na internet. Vše se vykresluje bleskově přímo na vašem stroji.
Tento projekt je prvním krokem. V rámci repozitáře plánuji v budoucnu zmapovat i další binární struktury a formáty.
Stáhnout nástroj (Standalone HTML)
Pro publikaci jsem připravil oddělené jazykové verze — stačí stáhnout tu, kterou preferujete:
Oficiální GitHub repozitář: Proteqtum/interactive-binary-structures
