Pitanje:
Kakvo je trenutno stanje tehnike za modeliranje platformi?
Andrew
2013-03-20 00:05:55 UTC
view on stackexchange narkive permalink

Kada se bavimo obrnutim inženjeringom, imamo nekoliko razina modela. Jedan od njih je model semantike uputa, koji nam govori što svaka izvorna uputa čini da modificira stanje naputka. Tamo napredujemo. Međutim, drugi je problem semantika platforme, koja je na višoj razini.

Na primjer, model na visokoj razini linux programa korisničkog prostora trebao bi sadržavati informacije o mprotectu i da može promijeniti vidljivost određenih regija koda. Threading i semantika povratnog poziva također su problem modeliranja platforme, možemo otkriti ulaznu točku programa iz zaglavlja (što je druga vrsta semantike! Ali onu koju vjerojatno nećemo kompromitirati), ali druge ulazne točke su objavljene u programu u oblik argumenata za atexit, pthread_create, itd.

Koji je naš trenutno najbolji napor / stanje tehnike u prikupljanju ovih informacija o platformi na visokoj razini na način koji razumiju praktičari? Što je s mehaničkim / automatiziranim sustavima razumijevanja? Znam da IDA ima (ili mora imati) informacije o različitim API-ima platforme, čini se da znam da kada je neposredni parametar za pthread_create, tada je neposredni pokazivač na kôd i treba ga tretirati kao takav. Što imamo dalje od toga?

Tražite li nešto poput REIL ili BUP, ali na razini "programa" / koda umjesto na razini uputa?
Misli na model okruženja u kojem aplikacija radi, poput "IL" za sustav. Na primjer, koji je najbolji način modeliranja poziva connect () nakon čega slijedi recv poziva ().
Dva odgovori:
#1
+8
cb88
2013-04-11 20:38:08 UTC
view on stackexchange narkive permalink

Izravno otkrivanje

Na najnižoj razini možete imati samo kopije knjižnica i provjeriti jesu li one korištene.

Otkrivanje na temelju potpisa

Na višoj je razini IDA FLIRT koja pohranjuje tek toliko podataka o knjižnici da identificira njezinu upotrebu. Ali njegova glavna prednost je smanjena upotreba diska ... vrijedi napomenuti da možete dodati više definicija zadanim.

Hex-Rays govori o tehnologiji ovdje detaljno.

Generičko prepoznavanje

Alati poput Coverity ili Clang statički analizator ili KLEE općenitiji su i vjerojatnije uključuju modeli za programiranje idioma.

Jedino što znam kako sam se približio IDA-i koji je otvoreni izvor je radare koji bi mogao imati neko prepoznavanje iz biblioteke. Također radare glavna stranica. I tražim otkad lovim nešto poput IDA-e koja besplatno podržava SPARC, a čini se da radare to čini, iako još nisam stigla pokušati.

Prema onome što mogu reći REC i Boomerang ne prepoznaju knjižnice onako kako to radi IDA, već samo pokušavaju sve dekompilirati. BAP vrši analizu binarnih datoteka i izveden je iz komponente Vine projekta BitBlaze, čija su dva projekta također dio.

Analiza protoka

TEMU i Rudder ovdje izgledaju prilično napredni. I bavite se kodom dok se izvršava. TEMU pomaže povezati ulaze i izlaze s protokom.

Vrijedno je također napomenuti da su alati Bitblaze dizajnirani da pružaju tragove za upotrebu u IDA-i, iako bi se inače mogli prilagoditi za upotrebu.

Odstupanje od detalja koje ste naveli TEMU zvuči najbliže onome što želite .... omogućuje vam označavanje zamršenih ulaza (mjesta memorije, fizički ulazi itd.) i otkrivanje učinci tih prljavština na izvršenje. Ako želite isprobati TEMU i koristite noviju Linux distribuciju (bilo što s GCC 4+, što je gotovo sve u posljednjih nekoliko godina), slijedite ovdje upute.

#2
+1
user1636717
2013-03-28 18:56:09 UTC
view on stackexchange narkive permalink

Nisam siguran da razumijem pitanje, ali različita rješenja za pješčanik (Norman, Androguard) obično stvaraju zapisnik događaja u sustavu koji vam daje neku ideju o platformi i njenom stanju. Osim toga, ja sam nesvjestan niti jednog alata koji bi vam pomogao da odredite stanje sustava putem statičke analize. Koristim program za pronalaženje pogrešaka da odgovorim na takva pitanja kad je to moguće, a ručnu statičku analizu kada ne.

Mislim da je to više povezano sa stvarnim modeliranjem funkcija sustava. Jedino što se mogu sjetiti što to čini su proizvodi za statičku analizu koda kao što su [Coverity] (http://www.coverity.com/), [Fortify] (http://www8.hp.com/ us / en / software-solutions / software.html? compURI = 1338812 # .UVRkdBy4WcE) i [Klocwork] (http://www.klocwork.com/).


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...