Od hamburgeru ke krávě aneb jak z binárky získat zdroják

Od Petr Zemek, 2013-06-29

V sobotu 15. června 2013 jsem měl na letošním Barcampu v Brně přednášku na téma dekompilace, což je proces získávání zdrojového kódu z binárního programu. V následujícím příspěvku se dozvíte, o čem přednáška byla a kde ji můžete zhlédnout online.

O čem přednáška byla?

Jak jistě víte, tak jsem studentem třetího ročníku doktorského studia na VUT FIT (teoretická informatika, přesněji teorie formálních jazyků). Příští školní rok (čtvrtý ročník) budu odevzdávat svou disertační práci. Mimo to jsem ale také již třetím rokem zaměstnaný u AVG Technologies, kdy v rámci projektu Lissom na VUT FIT vyvíjíme ve spolupráci s AVG nástroj pro tzv. zpětný překlad (neboli dekompilaci) binárního kódu. Toto téma patří do oblasti zpětného inženýrství.

Ve zkratce jde o to, že na vstupu máme platformně závislý program (např. binárku pro architekturu Intel x86 ve formátu ELF) a na výstupu je reprezentace tohoto programu ve vysokoúrovňovém jazyce (např. C). Hlavní vlastností našeho řešení je generičnost, kdy vyvíjíme nástroj, který dokáže dekompilovat binárky pro různé architektury (Intel 86, ARM, MIPS), různé souborové formáty (ELF, Windows PE), vzniklé z různých překladačů (GCC, MSVC) či přímo z assembleru. Nástroj tedy není vázán na žádnou konkrétní platformu či překladač a postupně se doplňuje podpora pro další platformy.

Úkol získat zdrojový kód z binárky mnozí přirovnávají k úkolu získat krávu z hamburgeru. Důvodem je, že při překladu programu dochází ke ztrátě velkého množství informací, stejně jako při přípravě hamburgeru z krávy. V přednášce se dozvíte, co to je ta dekompilace, k čemu je dobrá, jak probíhá překlad programu ze zdrojového kódu do binárky a proč je dekompilace taková fuška. Dále si představíme vyvíjený nástroj, ukážeme si, jak funguje a projdeme několik příkladů. V závěru prezentace je ukázána online webové dekompilační služba (viz dále) a jsou zodpovězeny otázky posluchačů.

Je z přednášky k dispozici záznam?

Ano, je. Lze si jej přehrát v prohlížeči či stáhnout k sobě do počítače. Pár fotek z ní je pak k vidění zde.

Lze si nějak onen vyvíjený nástroj vyzkoušet?

Můžete si jej vyzkoušet online ve vašem oblíbeném prohlížeči navštívením naší webové stránky.

Zní to moc zajímavě. Kde mohu získat další informace?

Mrkněte na naše publikace, kde je dekompilátor, včetně jeho částí, popsaný. Pokud byste nenašli odpověď na svou otázku, tak nám napište. Dále, pokud jste studentem bakalářského či magisterského studijního programu u nás na fakultě a máte zájem o bakalářskou či diplomovou práci na velmi zajímavém tématu, neváhejte se nám ozvat.

Obsah tohoto pole je soukromý a nebude veřejně zobrazen.

Filtrované HTML (využíváno)

  • Povolené HTML značky: <a href hreflang> <em> <strong> <cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <table>
  • Zvýraznění syntaxe kódu lze povolit přes následující značky: <code>, <blockcode>, <bash>, <c>, <cpp>, <haskell>, <html>, <java>, <javascript>, <latex>, <perl>, <php>, <python>, <ruby>, <rust>, <sql>, <text>, <vim>, <xml>, <yaml>.
  • Řádky a odstavce se zalomí automaticky.
  • Webové a e-mailové adresy jsou automaticky převedeny na odkazy.
CAPTCHA
19 + 1 =
Vyřešte tento jednoduchý matematický příklad a vložte výsledek. Např. pro 1+3 vložte 4.
Nějak se mi tady rozmohl spam, takže poprosím o ověření.