
Python バイトコード逆アセンブラ/デコンパイラ
Decompyle++ は、コンパイルされた Python バイトコードを有効で人間が読める Python ソースコードに変換することを目的としています。他のプロジェクトが様々な成功を収めている一方で、Decompyle++ はあらゆるバージョンの Python のバイトコードをサポートしようとしている点で独自です。
Decompyle++ には、バイトコード逆アセンブラ (pycdas) とデコンパイラ (pycdc) の両方が含まれています。
名前が示すように、Decompyle++ は C++ で書かれています。 コントリビュートしたい場合は、GitHub でフォークしてください: https://github.com/zrax/pycdc
CMake を使用してプロジェクトまたは Makefile を生成します (詳細は CMake のドキュメントを参照)
次のオプションを CMake に渡してデバッグ機能を制御できます:
| オプション | 説明 |
|---|---|
-DCMAKE_BUILD_TYPE=Debug | デバッグシンボルを生成 |
-DENABLE_BLOCK_DEBUG=ON | ブロックデバッグ出力を有効化 |
-DENABLE_STACK_DEBUG=ON | スタックデバッグ出力を有効化 |
生成されたプロジェクトまたは Makefile をビルドします
make を実行make check JOBS=4 を実行 (オプションで FILTER=xxxx を指定すると特定のテストのみ実行)pycdas (PYC 逆アセンブラ) を実行するには:
./pycdas [PYC ファイルへのパス]
バイトコードの逆アセンブル結果が標準出力に出力されます。
pycdc (PYC デコンパイラ) を実行するには:
./pycdc [PYC ファイルへのパス]
デコンパイルされた Python ソースが標準出力に出力されます。
エラーは標準エラー出力に出力されます。
マーシャル化されたコードオブジェクト:
両方のツールは、marshal.dumps(compile(...)) の出力である Python のマーシャル化されたコードオブジェクトをサポートしています。
この機能を使用するには、コマンドラインで -c -v <version> を指定してください。オブジェクト自体にバージョンメタデータが含まれていないため、バージョンを指定する必要があります。
Decompyle++ は Michael Hansen と Darryl Pogue の作品です。
追加のコントリビューション:
GNU General Public License, version 3 の条件の下で公開されています。 詳細は LICENSE ファイルを参照してください。