Pitanje:
Kako izvršavate obrnuti inženjering EXE-a "kompajliranog" s PyInstallerom
Mick
2013-03-22 19:01:31 UTC
view on stackexchange narkive permalink

Nakon što sam nedavno pogledao / pročitao prezentaciju koju je održao Dave Kennedy na DEF CON 20 [PDF], želio bih znati kako dekompilirati Python skriptu kompajliranu s PyInstaller.

U svojoj prezentaciji on stvara osnovnu skriptu obrnute ljuske u Pythonu i pretvara je u EXE pomoću PyInstallera.

Moje pitanje je kako uzeti PyInstaller stvoren EXE i ili u potpunosti, ili općenito, dohvatiti logički / izvorni kôd iz izvornih skripti Python (a)?

Koja je svrha raditi exe datoteku kad ste u mogućnosti hakirati samu exe datoteku.
Svrha generiranja EXE-a s PyInstallerom je tako da sustavi na kojima ga pokrećete ne zahtijevaju postojanje Python interpretera ili bilo kojih modula treće strane koje možda koristite. To čini vašu Python skriptu prenosivijom, ali ne skriva kod / logiku od inverznog inženjera.
Pet odgovori:
#1
+30
Ange
2013-03-22 20:39:38 UTC
view on stackexchange narkive permalink
  1. izlučivanje dodanih podataka EXE-a (blok počinje s PYZ, do kraja datoteke)
  2. izvlači željene datoteke pomoću preglednika arhiva
  3. decompyle .PYC - za to osobno preporučujem Uncompyle2.
Ažuriraniji Uncompyle nalazi se na https://pypi.python.org/pypi/uncompyle6
U ovom postu također postoji pomoć: https: //stackoverflow.com/questions/18303122/how-to-decompile-files-from-pyinstaller-pyz-fileOvu skriptu možete koristiti za izdvajanje datoteka: https: // sourceforge. net / projects / pyinstallerextractor / Verzija 1.8 je također u pastebinu: https: //pastebin.com/fnMw9AuL* Obavezno instalirajte pyinstaller (`pip install pyinstaller`) Nakon izdvajanja datoteke možete koristiti i ovaj alat: https: / /sourceforge.net/projects/easypythondecompiler/files/
Kako se radi broj 1?
#2
+10
Remko
2013-03-22 20:05:34 UTC
view on stackexchange narkive permalink

PyInstaller objavljuje svoj izvor, tako da vidite točno kako pakira python kôd u izvršnu datoteku ...

Općenitiji pristup bio bi korištenje alata poput binwalk na exe kao prvi korak.

Nisam siguran da je binwalk pravi alat za ovaj posao. Prikazao bi vam komprimirane dijelove izvršne datoteke, ali izlaz bi vjerojatno imao i puno drugih lažno pozitivnih rezultata, osim ako ga ne usmerite da traži samo komprimirane odjeljke ... što poništava svrhu njegove upotrebe na ovoj vrsti spis, IMHO.
@mrduclaw: moje iskustvo s binwalkom je da je to dobar alat za skeniranje na visokoj razini nepoznatih, binarnih datoteka kako bih vidio što bi moglo biti tamo. Pogotovo ako znamo što tražimo, ali ne znamo u kojoj je datoteci. Nisam htio predložiti binwalk kao cjelovito rješenje (izmijenio sam svoj odgovor kako bih naznačio da je to prvi korak)
Uopće, veza do binwalka izgleda kao zlonamjerna web stranica od lipnja 2020.
@Karsun lažno pozitivan u binarnom zapisu na mojoj web stranici, prijavio sam to googleu i čini se da je sada opet u redu (hvala što ste me obavijestili)
#3
+9
Igor Skochinsky
2013-03-22 19:56:44 UTC
view on stackexchange narkive permalink

Prezentacija na hack.lu 2012. pod naslovom "Kritična analiza sigurnosti softvera Dropbox" raspravljala je o preokretanju klijenta radne površine Dropbox koji je koristio sličnu implementaciju, ali s dodatnim zaokretom prilagođenog tumača Python s promijenjenim bajt kodom.

p> Pregled prezentacije: http://blog.csnc.ch/2012/12/asfws-a-critical-analysis-of-dropbox-software-security/
Link do slajdova: http://archive.hack.lu/2012/Dropbox%20security.pdf
#4
+8
Glides
2013-03-22 19:22:07 UTC
view on stackexchange narkive permalink

Ovaj bi vas postupak trebao približiti izvornom izvoru što je više moguće.

U osnovi ono što alati poput pyinstaller i py2exe rade su biblioteke paketa i ovisnosti sve zajedno, tako da možete pokrenuti "samostalni" EXE bez da ih morate preuzimati ili pripremati stroj s python interpreterom.

Kada pokrenete EXE - on se raspakira u memoriju. To uključuje .pyc datoteke (python kôd koji se pretvara u bytecode). pyREtic je alat koji vam omogućuje da ih zgrabite iz memorije i pretvorite natrag u izvor.

https://github.com/MyNameIsMeerkat/pyREtic

pyREtic

Obrnuti inženjer zamagljen Python bajtkod Ovaj alat vam omogućava vraćanje objekta u memoriji u izvorni kod, bez potrebe za pristupom bajtkoda izravno na disku. To može biti korisno ako se prijave pyc-a na disku zamagljuju na jedan od mnogih načina.

#5
+4
0xec
2014-02-15 22:23:33 UTC
view on stackexchange narkive permalink

Jedno rješenje za sve pyinstaller exe stvari. Koristite ovaj program za obrnuti inženjering pyinstaller generirane exe datoteke.

https://sourceforge.net/projects/pyinstallerexerebuilder/



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