Disassembler

Disassembler je program převádějící strojový kód do symbolického zápisu v assembleru. Je používán k analýze přeložených programů, u nichž není k dispozici jejich zápis v žádném vyšším programovacím jazyce.

Kód vygenerovaný disassemblerem je daleko obtížněji srozumitelný, než původní člověkem napsaný zdrojový kód, a to i pokud šlo o kód napsaný původně přímo v assembleru. Neobsahuje totiž ani původní názvy proměnných nebo podprogramů, ani žádné doprovodné komentáře.

Na rozdíl od debuggeru vypisuje „mrtvý kód“, což znamená, že v něm vidíme výpis kódu ještě před jeho spuštěním. A pokud se kód po jeho spuštěním sám upravuje v RAM paměti nebo ho upravuje jiný proces, tak se tyto změny ve výpisu nezobrazí. Toho se využívá při ochraně programu před disassemblováním.

Příkladem disassembleru je nástroj ndisasm, dodávaný spolu s assemblerem Netwide Assembler nebo IDA.

Potřeba využití disassembleru v běžné programátorské práci výrazně klesá v souvislosti s rostoucí dostupností programů s otevřeným zdrojovým kódem.

Použití

  • Zkoumání optimalizační síly překladačů a jejich postupů. Překladače (kompilátory) jsou při vhodném nastavení schopny vygenerovat programový kód, který ani vzdáleně nepřipomíná původní záměr tvůrce, a přesto funguje korektně a několikrát rychleji.
  • Prolomení jednodušších ochran programů typu shareware, trialware apod. Tato praktika, zpravidla spočívající ve vystopování klíčové podmínky (která rozhoduje, zda program např. přijme zadané registrační číslo) a jejím následném obrácení, se nazývá cracking.
  • Přenos programu, dostupného pouze ve formě strojového kódu, na jinou počítačovou platformu. Historicky takové případy nastávaly například v éře domácích osmibitových počítačů. I v současné době se disassemblery využívají tímto způsobem - například při vývoji emulátorů, umožňujících spouštět v uživatelem zvoleném prostředí programy určené pro zcela jiný operační systém nebo dokonce pro nekompatibilní hardware.
  • Analýza a studium chování virů při tvorbě antivirů.

Související články

Externí odkazy

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.