Decompile compiled python binaries (exe, elf) - Retreive from .pyc
Sawa ya tuzo ya mdudu: jiandikishe kwa Intigriti, jukwaa la tuzo za mdudu za malipo lililoundwa na wadukuzi, kwa wadukuzi! Jiunge nasi kwenye https://go.intigriti.com/hacktricks leo, na anza kupata tuzo hadi $100,000!
Kutoka Binary iliyokompiliwa hadi .pyc
Kutoka kwa binary iliyokompiliwa ya ELF unaweza kupata .pyc na:
Katika binary ya exe ya python iliyokompiliwa unaweza kupata .pyc kwa kukimbia:
Kutoka .pyc hadi nambari ya python
Kwa data ya .pyc ("iliyokompiliwa" kwa python) unapaswa kuanza kujaribu kutoa asili ya nambari ya python:
Hakikisha kwamba binary ina urefusho ".pyc" (ikiwa sivyo, uncompyle6 haitafanya kazi)
Wakati wa kutekeleza uncompyle6 unaweza kukutana na makosa yafuatayo:
Kosa: Namba ya uchawi isiyofahamika 227
Kurekebisha hili unahitaji kuongeza nambari sahihi ya uchawi mwanzoni mwa faili iliyoundwa.
Nambari za uchawi hutofautiana na toleo la python, ili kupata nambari ya uchawi ya python 3.8 utahitaji kufungua terminal ya python 3.8 na kutekeleza:
Namba ya uchawi katika kesi hii kwa python3.8 ni 0x550d0d0a
, basi, ili kusahihisha kosa hili utahitaji kuongeza kwenye mwanzo mwa faili ya .pyc baite zifuatazo: 0x0d550a0d000000000000000000000000
Mara baada ya kuongeza kichwa hicho cha uchawi, kosa linapaswa kusahihishwa.
Hivi ndivyo jinsi kichwa cha uchawi cha .pyc python3.8 kilivyoongezwa kwa usahihi:
Hitilafu: Kudecompile makosa ya kawaida
Hitilafu nyingine kama: class 'AssertionError'>; co_code should be one of the types (<class 'str'>, <class 'bytes'>, <class 'list'>, <class 'tuple'>); is type <class 'NoneType'>
inaweza kuonekana.
Hii labda inamaanisha kwamba hujaweka sahihi nambari ya uchawi au hujatumia nambari sahihi ya uchawi, hivyo hakikisha unatumia ile sahihi (au jaribu moja mpya).
Angalia nyaraka za hitilafu iliyopita.
Zana ya Kiotomatiki
Zana ya python-exe-unpacker inafanya kazi kama mchanganyiko wa zana kadhaa zilizopo jamii iliyoundwa kusaidia watafiti katika kufungua na kudecompile faili za kutekelezwa zilizoandikwa kwa Python, hasa zile zilizoundwa na py2exe na pyinstaller. Inajumuisha sheria za YARA kutambua ikiwa kutekelezwa ni msingi wa Python na kuthibitisha zana ya uundaji.
ImportError: Jina la Faili: 'unpacked/malware_3.exe/pycache/archive.cpython-35.pyc' halipo
Shida ya kawaida inayokutana ni faili isiyo kamili ya bytecode ya Python inayotokana na mchakato wa kufungua na kudecompile kwa unpy2exe au pyinstxtractor, ambayo kisha haikubaliki na uncompyle6 kutokana na kukosekana kwa nambari ya toleo la bytecode ya Python. Ili kutatua hili, chaguo la prepend limeongezwa, ambalo linaweka nambari inayohitajika ya toleo la bytecode ya Python, kurahisisha mchakato wa kudecompile.
Mfano wa shida:
Kuchambua mkutano wa python
Ikiwa hukufanikiwa kutoa kanuni ya awali ya python kufuatia hatua za awali, basi unaweza kujaribu kutoa mkutano (lakini haielezi sana, hivyo jaribu kutoa kanuni ya awali tena). Katika hapa nilipata kanuni rahisi sana ya kuvunja .pyc binary (bahati njema kuelewa mtiririko wa kanuni). Ikiwa .pyc ni kutoka python2, tumia python2:
Python kuwa Kitekelezaji
Kuanza, tutakuonyesha jinsi mizigo inavyoweza kuchakatwa katika py2exe na PyInstaller.
Ili kuunda mzigo kwa kutumia py2exe:
Sakinisha pakiti ya py2exe kutoka http://www.py2exe.org/
Kwa mzigo (katika kesi hii, tutaiita hello.py), tumia script kama ile katika Mchoro 1. Chaguo "bundle_files" lenye thamani ya 1 litajumuisha kila kitu ikiwa ni pamoja na mkalimani wa Python katika exe moja.
Mara baada ya script kuwa tayari, tutatoa amri "python setup.py py2exe". Hii itaunda kitekelezaji, kama ilivyo katika Mchoro 2.
Kujenga mzigo kwa kutumia PyInstaller:
Sakinisha PyInstaller kwa kutumia pip (pip install pyinstaller).
Baada ya hapo, tutatoa amri "pyinstaller -onefile hello.py" (kumbuka kwamba 'hello.py' ni mzigo wetu). Hii itajumuisha kila kitu katika faili moja ya kutekelezeka.
Marejeo
Mbinu ya tuzo ya mdudu: Jisajili kwa Intigriti, jukwaa la tuzo la mdudu la malipo lililoanzishwa na wadukuzi, kwa wadukuzi! Jiunge nasi kwenye https://go.intigriti.com/hacktricks leo, na anza kupata tuzo hadi $100,000!
Last updated