Pitanje:
Postoje li neki otvoreni programski paketi za ispitivanje izvedbe rastavljača?
WilliamKF
2013-03-20 20:56:58 UTC
view on stackexchange narkive permalink

Ključni alat u inverznom inženjeringu dobar je rastavljač, pa ima li raspoloživih dobrih ispitnih paketa za provjeru ispravnosti rastavljača kako biste osigurali ispravnu izvedbu rastavljača? Jesu li ove arhitekture specifične ili se mogu konfigurirati za rad na više objektnih arhitektura? Dobar test trebao bi uključivati ​​provjeru opskurnijih uputa za arhitekturu i neispravnih prijenosnih izvršnih datoteka.

Evo jedne posebno za i86 koju sam vidio. Postoje li modularne arhitekture?

Kad kažete "ispravnost rastavljača", mislite li na ispravnost dekodera instrukcija ili, mislite li na točan oporavak grafikona protoka upravljanja i druge vrste semantičkih informacija na visokoj razini?
Pa, koje je zanimljivije pitanje? Pretpostavljam kasniji, točni oporavak grafa protoka ...
Pet odgovori:
#1
+13
QAZ
2013-03-20 21:31:39 UTC
view on stackexchange narkive permalink

Postoji rad pod nazivom " Demontaža N-verzije: diferencijalno ispitivanje x86 rastavljača" (PDF) Roberta Palearija, Lorenza Martignonija, Giampaola Fresija Roglie i Danila Bruschija koji uspoređuje nekoliko rastavljača x86 u formalni način.

Da citiram sažetak članaka:

Izlaz rastavljača koristi se u mnoge različite svrhe (npr. otklanjanje pogrešaka i obrnuti inženjering). Stoga rastavljači predstavljaju prvu kariku dugog lanca stupnjeva o kojima ovisi bilo koja analiza strojnog koda na visokoj razini. U ovom radu pokazujemo da mnogi rastavljači ne uspijevaju dekodirati određene upute i stoga je prva veza lanca vrlo slaba. Predstavljamo metodologiju, koja se naziva rastavljanje N-verzije, kako bi se provjerila ispravnost rastavljača, na temelju diferencijalne analize

Nismo sigurni je li ovo pomalo izvan teme vašeg pitanja, ali može biti od interesa vi.

Zanimljiv papir! Nije posve iznenađujući zaključak. Godefroid i Taly imaju MSR TR (http://research.microsoft.com/apps/pubs/default.aspx?id=156020) gdje automatiziraju sintezu instrukcija i otkrivaju pogreške u ručno određenoj semantici.
#2
+8
Andrew
2013-03-20 21:37:43 UTC
view on stackexchange narkive permalink

U puno članaka koje sam pročitao, autori alata za dekompilaciju koriste SPEC mjerila za mjerenje učinkovitosti svog dekompilatora. To daje neku vrstu holističkog uvida u to kako dobro sustav funkcionira, od dekodiranja uputa do nadzora oporavka protoka. Ta mjerila ipak nisu besplatna ili otvorena.

Sastavljači GCC-a i clang-a također isporučuju referentne vrijednosti za testiranje. To bi moglo vrijediti istrage.

Također, Regehrov csmith projekt može generirati proizvoljne C programe za testiranje / fuzziranje kompajlera. Ovo bi moglo biti korisno za testiranje dekompilatora i binarnih sustava za analizu?

FWIW koristimo `cmith` za testiranje dekompilatora Hex-Rays, ali to pomaže.
#3
+6
Ed McMan
2013-03-21 06:35:05 UTC
view on stackexchange narkive permalink

Paket testnih plinova na koji ste se povezali nije samo za i386. nadređeni direktorij sadrži test slučajeve za x86-64, arm, alpha i mnoge druge arhitekture.

#4
+5
Ange
2013-03-22 13:12:42 UTC
view on stackexchange narkive permalink

Napravio sam datoteku koja sadrži sve x86 opkodove (u to vrijeme) i mnoge obrasce za kodiranje, što mi je pomoglo da aktivno pronađem mnoge greške u mnogim rastavljačima (IDA, Hiew, BeaEngine, OllyDbg, XED, hte ...), posebno manje poznati oblici i oni bez dokumenata.

(možda pomalo neskladni s temom - nije gotov testni paket)

Jeste li prijavili greške za sve njih? Jesu li se popravili?
Jesam, jesu.
#5
+2
jvoisin
2015-08-25 00:05:16 UTC
view on stackexchange narkive permalink

Projekt radare2 koristi opsežni paket testova za svaki od svojih mehanizama za rastavljanje, zajedno s određenijim testovima, poput formata, vlastite mogućnosti analize, ...



Ova pitanja su automatski prevedena s engleskog jezika.Izvorni sadržaj dostupan je na stackexchange-u, što zahvaljujemo na cc by-sa 3.0 licenci pod kojom se distribuira.
Loading...