43

あちこち検索しましたが、Python 2.7 .pyc で動作する逆コンパイラが見つかりません。Python 2.7で動作するものを知っている人はいますか? ありがとう

4

5 に答える 5

85

今日はずっと午前中だったので、誰かがまだこれに苦労している場合は、自分に合った解決策を見つけました。

アンコンパイル

インストール手順:

git clone https://github.com/gstarnberger/uncompyle.git
cd uncompyle/
sudo ./setup.py install

プログラムがインストールされると (注: システム全体でアクセス可能な Python パッケージにインストールされるため、 にあるはず$PATHです)、次のように Python ファイルを復元できます。

uncompyler.py thank_goodness_this_still_exists.pyc > recovered_file.py

逆コンパイラは、主にコメントの形でノイズを追加しますが、驚くほどクリーンで、元のコードに忠実であることがわかりました。コードを実行できるようにするには、復元されたファイルの終わり近くにある +++ で始まる小さなテキスト行を削除する必要があります。

于 2012-04-06T18:31:16.750 に答える
25

Decompyle++ (pycdc) は、さまざまな Python バージョンで動作するようです: https://github.com/zrax/pycdc

例えば:

git clone https://github.com/zrax/pycdc   
cd pycdc
make  
./bin/pycdc Example.pyc > Example.py
于 2012-08-24T20:41:58.233 に答える
21

更新(2019-04-22)-私が最初に述べた答えではなく、最近はuncompyle6を使用したいようです。

これはうまくいくようです:http ://code.google.com/p/unpyc/

問題8は2.7をサポートしていると言っています:http ://code.google.com/p/unpyc/updates/list

更新(2013-09-03)-コメントや他の回答に記載されているように、unpycの代わりにhttps://github.com/wibiti/uncompyle2またはhttps://github.com/gstarnberger/uncompyleを参照する必要があります。

于 2011-11-18T21:51:22.850 に答える
11

これは、pyc ファイルを逆コンパイルするための優れたツールです。

私がコーディングしたもので、python 1.0 - 3.3 をサポートしています。

その uncompyle2 と decompyle++ に基づいています

http://sourceforge.net/projects/easypythondecompiler/

于 2014-01-28T19:04:07.387 に答える
3

Ned Batchelder は、.pyc ファイルをアンマーシャリングし、その中のすべてのコード オブジェクトを逆アセンブルする短いスクリプトを投稿したので、Python バイトコードを確認できます。Python の新しいバージョンでは、setmodtimeと print の行をコメントアウトする必要があるようです (ただし、sets の行はコメントしないでくださいmoddate)。

それを Python ソースに戻すことは、理論的には可能ですが、やや難しくなります。Python の古いバージョンで動作するこれらすべてのプログラムは、それを行うと思います。

于 2011-11-18T21:33:10.407 に答える