Decompile compiled python binaries (exe, elf) - Retreive from .pyc
Bug bounty wenk: teken aan vir Intigriti, 'n premium bug bounty platform geskep deur hackers, vir hackers! Sluit by ons aan by https://go.intigriti.com/hacktricks vandag, en begin om belonings tot $100,000 te verdien!
Vanaf Saamgestelde Binêre lêer tot .pyc
Vanaf 'n ELF saamgestelde binêre lêer kan jy die .pyc kry met:
In 'n python exe binêre saamgestel kan jy die .pyc kry deur dit uit te voer:
Van .pyc na Python-kode
Vir die .pyc-data ("gekompilieerde" Python) moet jy begin om te probeer om die oorspronklike Python-kode te onttrek:
Maak seker dat die binêre lêer die uitbreiding ".pyc" het (indien nie, gaan uncompyle6 nie werk nie)
Tydens die uitvoering van uncompyle6 mag jy die volgende foute teëkom:
Fout: Onbekende siernommer 227
Om dit reg te stel, moet jy die regte sielkundige nommer aan die begin van die gegenereerde lêer toevoeg.
Sielkundige nommers verskil met die Python-weergawe, om die sielkundige nommer van Python 3.8 te kry, moet jy 'n Python 3.8-terminal open en uitvoer:
Die sielnommer in hierdie geval vir python3.8 is 0x550d0d0a
, dan, om hierdie fout te reg te stel, sal jy nodig hê om by die begin van die .pyc lêer die volgende bytes by te voeg: 0x0d550a0d000000000000000000000000
Sodra jy daardie sielvolgorde bygevoeg het, behoort die fout reggestel te wees.
Dit is hoe 'n korrek bygevoegde .pyc python3.8 sielvolgorde sal lyk:
Fout: Decompiling generiese foute
Ander foute soos: class 'AssertionError'>; co_code should be one of the types (<class 'str'>, <class 'bytes'>, <class 'list'>, <class 'tuple'>); is type <class 'NoneType'>
kan verskyn.
Dit beteken waarskynlik dat jy die sielkundige nommer nie korrek bygevoeg het nie of dat jy nie die korrekte sielkundige nommer gebruik het nie, so maak seker jy gebruik die regte een (of probeer 'n nuwe een).
Kyk na die vorige foutdokumentasie.
Outomatiese Gereedskap
Die python-exe-unpacker gereedskap dien as 'n kombinasie van verskeie gemeenskapsbeskikbare gereedskappe wat ontwerpers help om uitvoerbare lêers geskryf in Python te ontpak en te dekompilieer, spesifiek dié wat geskep is met py2exe en pyinstaller. Dit sluit YARA-reëls in om te identifiseer of 'n uitvoerbare lêer op Python gebaseer is en bevestig die skeppingsgereedskap.
ImportError: Lêernaam: 'unpacked/malware_3.exe/pycache/archive.cpython-35.pyc' bestaan nie
'n Algemene probleem wat ondervind word, behels 'n onvolledige Python bytekode-lêer as gevolg van die ontpakkingsproses met unpy2exe of pyinstxtractor, wat dan nie deur uncompyle6 herken word nie as gevolg van 'n ontbrekende Python bytekode-weergawe nommer. Om hierdie probleem aan te spreek, is 'n voorvoegselopsie bygevoeg wat die nodige Python bytekode-weergawe nommer byvoeg, wat die dekompileringproses fasiliteer.
Voorbeeld van die probleem:
Ontleding van Python-samestelling
As jy nie in staat was om die oorspronklike Python-kode te onttrek nie volgens die vorige stappe, kan jy probeer om die samestelling te ontleed (maar dit is nie baie beskrywend nie, so probeer weer om die oorspronklike kode te onttrek).In hier het ek 'n baie eenvoudige kode gevind om die .pyc binêre kode te ontleed (sterkte met die begrip van die kodevloei). As die .pyc van Python2 afkomstig is, gebruik Python2:
Python na Uitvoerbare lêer
Om te begin, gaan ons jou wys hoe lassies gekompileer kan word in py2exe en PyInstaller.
Om 'n lassie te skep met behulp van py2exe:
Installeer die py2exe-pakket vanaf http://www.py2exe.org/
Vir die lassie (in hierdie geval, ons sal dit hello.py noem), gebruik 'n skriffie soos die een in Figuur 1. Die opsie "bundle_files" met die waarde van 1 sal alles insluitend die Python-interpreter in een uitvoerbare lêer bundel.
Sodra die skriffie gereed is, sal ons die bevel "python setup.py py2exe" uitreik. Dit sal die uitvoerbare lêer skep, net soos in Figuur 2.
Om 'n lading te skep met behulp van PyInstaller:
Installeer PyInstaller met behulp van pip (pip install pyinstaller).
Daarna sal ons die opdrag "pyinstaller --onefile hello.py" uitreik (onthou dat 'hello.py' ons lading is). Dit sal alles saambind in een uitvoerbare lêer.
Verwysings
Foutbeloning wenk: teken aan vir Intigriti, 'n premium foutbeloningsplatform geskep deur hackers, vir hackers! Sluit by ons aan by https://go.intigriti.com/hacktricks vandag, en begin om belonings tot $100,000 te verdien!
Last updated