Disassembler

Disassembler (z anglického  disassembler [ ˌdɪsəˈsɛmblə (r) ]) je překladač , který převádí strojový kód , objektový soubor nebo moduly knihovny na text programu v jazyce symbolických instrukcí .

Podle režimu provozu s uživatelem se dělí na automatické a interaktivní. Takové disassemblery vygenerují hotový výpis, který lze následně upravit v textovém editoru. Příkladem interaktivity je IDA . Umožňuje změnit pravidla demontáže a je velmi užitečným nástrojem pro výzkum programů .

Existují jednoprůchodové a víceprůchodové disassemblery. Hlavním problémem v práci disassembleru je rozlišit data od strojového kódu, proto se při prvních průchodech automaticky nebo interaktivně shromažďují informace o hranicích procedur a funkcí a při posledním průchodu se tvoří konečný výpis. Interaktivita tento proces zlepšuje, protože při pohledu na výpis rozebrané oblasti paměti může programátor okamžitě zvýraznit řetězcové konstanty, dát smysluplná jména známým vstupním bodům a komentovat fragmenty programu, které analyzoval. Jednoprůchodový disassembler (jako inline assembler) je obvykle nedílnou součástí debuggeru .

Nejčastěji se disassembler používá k analýze programu (nebo jeho části), jehož zdrojový kód je neznámý - za účelem úpravy, kopírování nebo hackování. Méně často - hledat chyby ( bugy ) v programech a kompilátorech , stejně jako analyzovat a optimalizovat strojový kód vytvořený kompilátorem .

Při práci se spustitelným kódem nebo bajtkódem vytvořeným v některých jazycích vyšší úrovně (například java) je možné obnovit nejen text v jazyce symbolických instrukcí, ale dokonce i strukturu tříd programu, a pokud byly informace o ladění není zakázáno při kompilaci spustitelného souboru - a zdrojového kódu programu. K vyloučení takových možností se používá mlžení .

Příklady programů disassembleru

Viz také

Poznámky

Literatura

Odkazy