cx_freezeによって生成されたEXEを完全に逆コンパイルして、読み取り可能なPythonコードに戻すことはできますか?
Can Exe Generated Cx_freeze Be Completely Decompiled Back Readable Python Code
解決:
一般的に-いいえ。 CX Freezeとpy2exeは、コードのPYCバージョン、つまりPYファイルからコンパイルされたバイトコードを格納します。現在、私が間違っていなければ、実行可能なPYCデコンパイラーはありません。注釈付きの多かれ少なかれ読みやすいバイトコードを提供するものもありますが、実際のPythonソースコードを提供するものはありません。したがって、その点では-いいえ、逆コンパイルすることはできません。完全にネイティブな方法でShedSkinを使用することも検討できます
現在受け入れられている答えはもはや真実ではないようです。
で凍結されたプロジェクトから元のソースコードを復元する方法は次のとおりですcx_freeze。
注:ここでは「Helloworld」プロジェクトで実行されますが、同じ方法を使用して、凍結した私のプロジェクトから1000行以上のコードソースコードを逆コンパイルすることができました。cx_freeze、そしてほぼ元のソースコードを回復してください!
1)cx_freezeを使用します
を作成しますを含むtest.pyファイル
import time print( 'hello')time.sleep(2)print( 'world')次に、で実行可能ファイルを作成します
cxfreeze test.py --target-name = test.exe次に、通常、これを最終ユーザーに配布します。
では、これをリバースエンジニアリングしてみましょう。
#2).pycバイトコードを取得する
開けるdist / lib /library.zipしてファイルを抽出しますtest__main __。pyc。
#3)decompyle6を使用してソースコードを取得します
uncompyle6をopen( 'test_main_reverse_eng.py'、 'w')としてfとしてインポートします:uncompyle6.decompile_file( 'test__main __。pyc'、f)#4)サプライズ...
これが元のソースコードです!
#uncompyle6バージョン3.7.1#Pythonバイトコード3.7(3394)#逆コンパイル:Python 3.7.6(tags / v3.7.6:43364a7ae0、2019年12月19日、00:42:30)[MSC v.1916 64ビット(AMD64) ]#埋め込みファイル名:test.py#コンパイル日:2020-06-16 21:02:17#ソースmod2のサイズ** 32:58バイトimport time print( 'hello')time.sleep(2)print ('世界')