Pitanje:
Raspakiravanje binarnog statički
EfForEffort
2013-03-21 09:24:09 UTC
view on stackexchange narkive permalink

Recimo da imam binarni zapis koji nisam u mogućnosti izvršiti (na primjer, radi na nekom uređaju na kojem ja nemam jedan), ali ga mogu rastaviti. Mogu dobiti dokumente o arhitekturi. (U mom slučaju to je MIPS mali endian.) Ali binarni sustav ima vrlo malo uvoza, vrlo malo žica itd., Pa se stvarno čini kao da je spakiran.

Kako mogu krenuti statički raspakirati? (Uredi: Mislim, raspakirajte ga bez ikakvog pristupa izvornom uređaju.)

Možete ga pokušati pokrenuti s jednim od emulatora korisničkog načina isporučenog s QEMU-om ... pomoglo bi kad biste znali više o tome, vjerojatno bi rastavljač pomogao poput IDA-e, možda je to jedna od vrsta s kojom besplatna verzija može raditi. Također nisam siguran što mislite pod pojmom "statičko raspakiranje"
Ida Pro i Bochs emulator izgledaju kao put, pogledajte [ovdje] (https://www.hex-rays.com/products/ida/support/tutorials/debugging_bochs.pdf) za vodič.
@Remko: nažalost Bochs emulira samo x86, tako da ovdje vjerojatno neće pomoći
@cb88, Imam kopiju IDA Pro-a. I mislim na to da želim raspakirati binarnu datoteku, ali nemam uređaj za koji je izvorno bio namijenjen. Čini se da je QEMU + mipsel pravi put; Sad preuzimam debian-mipsel.
Vjerojatno biste to mogli učiniti i u chrootu, s gentoo mipsom i statičkim qemu emulatorom korisničkog načina, ako je emulacija qemu sustava previše neispravna ili je teško dobiti podatke natrag. http://www.gentoo.org/proj/en/base/embedded/handbook/?part=1&chap=5
četiri odgovori:
#1
+7
ixje
2013-03-21 13:47:32 UTC
view on stackexchange narkive permalink

Tijekom preko 30 ugrađenih firmvera ugrađenih uređaja koje sam vidio u prošlosti, rijetko sam ih vidio da koriste bilo što vlasničko. Često se radi samo o gzip / LZMA ili sličnoj kompresiji (iako ponekad s modificiranim ili uklonjenim zaglavljima).

Stoga bih kao prvi korak pokušao nešto poput binwalk za traženje poznatih algoritama kompresije. Ako to ne pomogne, isprobajte alate za pronalaženje kripto konstanti, poput Pronađi kriptu ili Pretraživanje potpisa. To funkcionira samo ako je kripto softverska implementacija. Ako je to sofisticiraniji uređaj, recimo set-top-box, s hardverski ubrzanim mehanizmom za dešifriranje i OTP memorijom za spremanje ključa, onda nemate sreće bez pristupa tijekom izvođenja (osim ako oni jako zeznu dodavanje ključa OTP za mehanizam za dešifriranje).

Napokon možete pokušati otkriti koriste li neki zaštićeni algoritam i emuliraju li taj algoritam pomoću QEMU ili gxemul ili napišite vlastiti dekompresor na jeziku više razine.

Ovo je dobra ideja. Pokrenuo sam binwalk i nisam pronašao ništa osim da je riječ o ELF-u (tj. Prijavio je samo ono što je datoteka (1) prijavila). Pretraživanje znakova također nije pronašlo ništa. Pretpostavljam da je sljedeći korak QEMU.
#2
+3
user1354557
2013-03-22 22:34:35 UTC
view on stackexchange narkive permalink

U Knjizi Ida Pro, Chris Eagle demonstrira upotrebu dodatka nazvanog ida-x86emu, koji se može koristiti za statičko raspakiranje binarnih datoteka simuliranjem izvršenja unutar IDA baze podataka . Pogledajte to; otvoren je izvor i prilično je jednostavan za upotrebu.

Nažalost, ne pomaže jer je ovo MIPS binarni = [
#3
+3
Ange
2013-03-26 21:17:16 UTC
view on stackexchange narkive permalink

nekoliko mogućih načina:

  1. identificirajte pakera

    • nabavite standardne pakere svoje platforme (na primjer UPX ), provjerite da li nije onaj koji se koristi.
    • Ako je to standardni paket, možda ste već pobijedili, jer bi to moglo biti dokumentirano, ili još bolje, poput UPX-a, može se raspakirati i open-source.
  2. prepoznati algoritam

    • nema toliko dobrih + raširenih algoritama pakiranja (NRV, LZMA, JCAlg, ApLib, BriefLZ). obično ih je lako prepoznati po veličini tijela ili konstantama. (Nekoliko sam ih implementirao u čistom pythonu u Kabopan)
    • ako možete lako prepoznati algoritam pakiranja / šifriranja, onda vjerojatno možete pronaći čistu implementaciju za statičko raspakiranje
  3. zaprljati ruke

    • ako još uvijek ne znate algoritam, a očito je stvarno prilagođeni, pročitajte drugi paker za istu platformu (tj. još jednom pročitajte UPX Mips binarni i njegov izvor), tako da vas može upoznati sa sličnim (paker) trikovima koji se koriste na vašoj platformi.
    • zatim potražite vjerojatni algoritam kompresije (vjerojatno dio koda različitog izgleda, ljudi se vrlo rijetko petljaju s njima i ponovno implementiraju algoritam na vašem omiljenom jeziku i vanjski se raspakiraju (pronalaze parametre, primjenjuju algoritme, mijenjaju / rekonstruiraju binarne datoteke)
  4. Lijena metoda grubim forsiranjem: neki algoritmi poput ApLib nemaju zaglavlje ni parametar (čak ni veličinu): algoritam samo zahtijeva pokazivač na compr essed buffer, pa je ponekad dovoljno da ga samo slijepo isprobate na bilo kojem odmaku vaše binarne datoteke i provjerite imamo li pristojan dekomprimirani međuspremnik (ne premali, ne ogroman + pun 00s).

#4
+2
Rolf Rolles
2013-03-21 12:43:01 UTC
view on stackexchange narkive permalink

Moj općeniti odgovor bio bi "simuliranjem samo-modificirajućih operacija upakirane binarne datoteke". Tako bi, na primjer, ovo obuhvaćalo uklanjanje kompresije pod kojom je zakriven većina pakera. To će zahtijevati "statičko praćenje" tijeka izvršavanja kroz paker, čiji kôd može biti podložan samo-izmjeni.

To objašnjenje vrijedi za tradicionalni stil pakiranja, pri čemu su dijelovi binarnog dijela komprimirani / šifrirani. Mogao bi biti slučaj da su potrebne sofisticiranije strategije raspakiranja, na primjer kako je opisano u mom radu "Raspakiranje obrušivača virtualizacije" 1.



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