Сборка и использование декомпилятора pyc-файлов
Сборка deb-пакета
Для сборки декомпилятора понадобятся пакеты git
, gc++
, cmake
и make
. Для сборки deb-пакета в изолированном окружении нам также понадоятся пакеты fakeroot
и checkinstall
. Установим их:
# apt-get install git g++ cmake make
Склонируем git-репозиторий с исходными текстами утилиты pycdc
:
$ git clone https://github.com/zrax/pycdc
Переходим в каталог с исходными текстами и выполняем генерацию файла Makefile
:
$ cd pycdc
$ cmake CMakeLists.txt
Создадим описание будущего deb-пакета:
$ echo -n "C++ python bytecode disassembler and decompiler " > description-pak
В git-репозитории нет ни веток, ни меток, по которым можно было бы определить версию программы. В качестве версии используем отметку времени последней фиксации в git-репозитории, которую просмотрим с помощью следующей команды:
$ git log
Выполняем сборку deb-пакета, подставив в опцию --pkgversion
отметку времени последней фиксации в репозитории git:
$ fakeroot checkinstall --pkgname=pycdc --pkgversion=20220616094500 --pkgrelease=debian-buster-1 --maintainer=vladimir@stupin.su --pkglicense=GPL-3.0 --requires='libstdc++6, libgcc-s1, libc6' -y -D --install=no --fstrans=yes make install
В текущем каталоге появится пакет pycdc 20220616094500-debian-buster-1 amd64.deb.
Установка пакета
Для установки пакета в систему воспользуемся следующей командой:
# dpkg -i pycdc_20220616094500-debian-buster-1_amd64.deb
Использование декомпилятора
Для примера попробуем декомпилировать такой файл:
$ cat __init__.py
try:
from .local import *
except ImportError:
from .base import *
Запускаем команду для декомпиляции pyc-файла и получаем практически идентичный результат:
$ pycdc __init__.pyc
# Source Generated with Decompyle++
# File: __init__.pyc (Python 2.7)
try:
from local import *
except ImportError:
from base import *