Otázka:
Jaký je současný stav dekompilace LLVM IR?
nneonneo
2013-03-31 13:27:01 UTC
view on stackexchange narkive permalink

LLVM IR je poměrně vysoký typový bitový kód, který lze přímo spustit pomocí LLVM a za běhu jej zkompilovat do JIT. Nepřekvapilo by mě, kdyby byl nový spustitelný formát nebo programovací jazyk navržen přímo nad LLVM a měl by být spuštěn, jako by to byl interpretovaný jazyk.

V tomto ohledu jsem zvědavý na stav o dekompilaci LLVM. Protože se jedná o typizovaný bitový kód, který je speciálně navržen pro snadnou analýzu, dalo by se očekávat, že je relativně snadné jej dekompilovat (nebo alespoň znovu sestavit do čitelnější nebo logičtější podoby).

Googling se objeví tato bakalářská práce, která dělá relativně primitivní práci, ale zdánlivě málo dalších vede. Možná bych očekával, že tento supervizor kolegy provedl další výzkum v této oblasti, ale zdá se, že jeho zaměření je více na oblast výzkumu kompilátoru.

Existují výzkumné projekty , komerční prototypy nebo dokonce jakýkoli druh aktivního výzkumu prováděného v oblasti dekompilace LLVM?

Jeden odpovědět:
Andrew
2013-04-01 11:46:30 UTC
view on stackexchange narkive permalink

Dekompilace je extrémně snadná. LLVM po dlouhou dobu dodáván s CBackend, který by převedl LLVM na C.

LLVM, který je vytvořen dnešními frontendy (clang), je velmi vhodný pro jakýkoli druh analýzy a porozumění, které vás napadnou. Pravděpodobně tedy můžete k dekompilaci IR použít pouze běžné nástroje LLVM (opt, llc). Zjistil jsem, že LLVM IR je sám o sobě docela čitelný, ale jsem divný.

Stejně jako kompilace C do assembleru jsou ale některé informace ztraceny nebo zničeny. Názvy polí struktury jsou pryč, navždy nahrazeny indexy. Jejich typy však zůstávají. Tok řízení jako koncept zůstává, nedochází k záměně kódu a dat, ale funkce lze odebrat, protože jsou mrtvé nebo vložené. Věřím, že jsou odstraněny také hodnoty výčtu. Informace o parametrech, které mají fungovat, zůstávají, stejně jako typy globálních proměnných.

Ve skutečnosti existuje slušný příspěvek, kde přispěvatel LLVM popisuje nástrahy a problémy s používáním jejich formátu bitových kódů způsobem, který navrhujete. Zdá se, že ho mnoho lidí poslouchalo, takže si nejsem jistý, jestli někdy budeme muset přejít za nástroje, které v současné době máme k pochopení bitcoinu LLVM ...

PNaCl nyní používá (zmenšenou podmnožinu) LLVM jako svůj formát. Není to tedy jen IR překladače.


Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...