cx_freezeによって生成されたEXEを完全に逆コンパイルして、読み取り可能なPythonコードに戻すことはできますか?



Can Exe Generated Cx_freeze Be Completely Decompiled Back Readable Python Code



解決:

一般的に-いいえ。 CX Freezeとpy2exeは、コードのPYCバージョン、つまりPYファイルからコンパイルされたバイトコードを格納します。現在、私が間違っていなければ、実行可能なPYCデコンパイラーはありません。注釈付きの多かれ少なかれ読みやすいバイトコードを提供するものもありますが、実際のP​​ythonソースコードを提供するものはありません。したがって、その点では-いいえ、逆コンパイルすることはできません。完全にネイティブな方法で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 ('世界')