Tool
pyinstxtractor-ng (PyInstaller Extractor Next Generation)
Fork of PyInstaller Extractor (pyinstxtractor) by the same author that extracts the bundled CArchive files and PYZ modules from Linux ELF and Windows PE executables built with PyInstaller, writing .pyc files with repaired headers for a separate bytecode decompiler. Unlike the original script, it unmarshals the PYZ archive with the xdis library, so it does not have to run under the Python version that built the executable, and it automatically decrypts PYZ entries that PyInstaller's optional AES encryption protected, using the key module bundled in the same executable. A one-directory mode extracts the PYZ next to the other files so the result can be run directly, and --info prints archive metadata such as versions, entry points and encryption without writing files.
- Targets
- App · Binary
- Category
- Native analysis tools
- Relationship
- Foundation tool
- Sources reviewed
Requirements & limits
- Latest release at review: 2026.07.03, published 2026-07-03, with a Linux binary and a Windows .exe built by PyInstaller, so those builds need no Python installation; the same version is on PyPI as pyinstxtractor-ng 2026.7.3. The reviewed main commit is two commits ahead of that tag and only relaxes the pycryptodome requirement from exactly 3.17 to 3.19.1 or later below 4.
- Running the script needs Python 3.8+, xdis pinned to 6.3.0 and pycryptodome; a leftover Poetry section in pyproject.toml still caps Python below 3.13. Release binaries come from a manually triggered workflow that builds with Python 3.8 and PyInstaller 5.10.1, and the repository has no tests or test executables.
- The script header lists PyInstaller 2.0 through 5.10.1 as supported, and the README states no version range. Entries that can be neither decompressed nor decrypted are saved unchanged with an .encrypted suffix.
- The PyInstaller executable comes from the user, and turning the recovered bytecode into source needs a separate decompiler. Recovered code remains subject to the rights of the original program’s owner.
- GPL-3.0-only. Nothing was run.
About this entry
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · pyinstxtractor/pyinstxtractor-ng · Revision 1ed86cc
- pyinstxtractor_ng.py GitHub · pyinstxtractor/pyinstxtractor-ng · Revision 1ed86cc
- pyinstxtractor_ng.py#L1-L15 GitHub · pyinstxtractor/pyinstxtractor-ng · Revision 1ed86cc
- pyproject.toml GitHub · pyinstxtractor/pyinstxtractor-ng · Revision 1ed86cc
- requirements-dev.txt GitHub · pyinstxtractor/pyinstxtractor-ng · Revision 1ed86cc
- .github/workflows/build.yaml GitHub · pyinstxtractor/pyinstxtractor-ng · Revision 1ed86cc
- LICENSE GitHub · pyinstxtractor/pyinstxtractor-ng · Revision 1ed86cc
- https://github.com/pyinstxtractor/pyinstxtractor-ng/releases/tag/2026.07.03
- https://pypi.org/project/pyinstxtractor-ng/2026.7.3/
- README.md GitHub · extremecoders-re/pyinstxtractor · Revision 815d31c
More in Native binaries
- CoBRA (Coefficient-Based Reconstruction of Arithmetic) · Tool
- DownUnderCTF: masked-squares flag checker · Case study
- Show Your Work: a measured dissection of REA's evidence architecture · Case study
- Windows loader: static malware analysis with REA and Codex · Case study
- OpenBSD netcat: static REA and Ghidra investigation · Case study
- Ghidra · Tool