Pitanje:
Koji različiti UPX formati postoje i kako se razlikuju?
qbi
2013-03-24 01:12:39 UTC
view on stackexchange narkive permalink

Nedavno sam postavio pitanje o otkrivanju UPX kompresije. 0xC0000022L želio je znati je li to običan UPX. Međutim, do tog trenutka bio sam svjestan samo običnog UPX-a. Dakle, moje pitanje je:

  • Koje verzije / modifikacije UPX-a postoje?
  • Po čemu se razlikuju? Koje značajke imaju?
Tri odgovori:
#1
+16
Ange
2013-04-12 01:45:33 UTC
view on stackexchange narkive permalink

Prvo, pogledajmo UPX strukturu.

UPX struktura

  1. Prolog

    1. CMP / JNZ za Provjere parametara DLL-ova

    2. Potisni, postavi registre

    3. neobavezno NOP poravnanje

  2. Algoritam dekompresije

    • bez obzira radi li se o NRV ili LZMA
  3. Vraćanje poziva / skokova

    • UPX pretvara relativne pozive i skače u apsolutne, kako bi se poboljšala kompresija.
  4. Uvoz

    • učitavanje knjižnica, rješavanje API-ja
  5. Resetiraj zastavice odjeljka

  6. Epilog

    • čisti stek
    • skok na izvorni EntryPoint

Za više detalja, ovdje je komentirani IDA (besplatna verzija) IDB UPX-izdanog PE-a.

modificirani UPX varijante

Jednostavne dijelove poput prologa / epiloga lako je izmijeniti, a posljedično se često i mijenjaju:

  • osnovni polimorfizam: zamjena instrukcije s ekvivalentom
  • premještajući ih skokovima

Složeni dijelovi poput dekompresije, obnavljanja poziva, učitavanja uvoza obično se ne mijenjaju, pa se obično između njih umetne prilagođeni kôd:

  • anti-debug
  • dodatna xor petlja (nakon dekompresije)
  • marker koji će se dalje provjeravati u raspakiranom kodu, tako da datoteka zna da je raspakirana.

faking

Kako prolog ne čini puno, trivijalno je kopirati ga i na EntryPoint na UPX-pakiranom PE, za zavaravanje identifikatora i lažno UPX pakiranje.

Neki se alati također oslanjaju na zadana imena odjeljaka, u slučaju PE datoteka.
#2
+12
Peter Andersson
2013-03-24 01:29:11 UTC
view on stackexchange narkive permalink

Zanemarit ću da postoji više algoritama kompresije u UPX-u i da postoji više verzija UPX-a.

Općenito kada ljudi pitaju radi li se o običnom UPX-u ili je vanilija, to je zato što malware i drugi softver vole uzimati UPX i neznatno ga modificirati tako da se ne može raspakirati sa standardnom izvršnom UPX izvršnom datotekom i da će antivirusni programi teže ga raspakirajte. Nije baš učinkovit u suzbijanju obrnutog inženjeringa.

Točno tako. Ne možeš čitati misli, zar ne? ;)
Možete li uključiti bilo koji primjer / mjesta / mjesta kako je izmijenjen? Takve bi informacije mogle dodatno stvoriti snažan odgovor. :)
A ako se deriviranje UPX-a koristi kao zaštitni mehanizam, možete se kladiti da će donijeti lažne pozitivne rezultate dok ne postanete plavi u licu. Većina zaštitarskih tvrtki UPX je učinkovito klasificirala kao alat za zlonamjerni softver, a sudbina je uobičajena za biblioteke otvorenog koda i izvršne alate.
#3
+5
EfForEffort
2013-03-24 05:11:30 UTC
view on stackexchange narkive permalink

Nisam siguran je li to ono što tražite, ali UPX ima više načina komprimiranja određenog formata. Na primjer, ELF - može se dekomprimirati izravno u memoriju - može se dekomprimirati u / tmp i odatle izvršiti

Prema zadanim postavkama preferira se prva opcija, ali mislim da nije obavezna. Pojedinosti potražite u UPX priručniku.



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