LoginSignup
0
1

【Python3.9】Pyintallerでコンパイルされた.pyファイルをデコンパイルする方法

Last updated at Posted at 2023-10-06

Python3.9をデコンパイルする方法がわからない

Python3.9でコンパイルされたexeファイルをコードに戻す方法が見当たらない!
そんな悩みを抱えた私がひたすら調べたこと・成功した方法をまとめていく

方法

pyinstxtractorをダウンロードしよう

下記のGithubからzip形式でダウンロードし解凍しておいてください
https://github.com/WithSecureLabs/python-exe-unpacker

exeファイルを展開しよう

先ほどダウンロードしたファイル内から「pyinstxtractor.py」を見つけてください。
そのファイルを使って展開します。

cmd
>>cd "pyinstxtractorのカレントディレクトリのパス"
>>python pyinstxtractor.py "展開したいexeファイルのパス"

実行して「You can now use a python decompiler on the pyc files within the extracted directory」と表示されれば完了です。exeファイルのカレントディレクトリに「〇〇.exe_extracted」というフォルダが生成されているので、開いてください。

そして「exeファイル名」だけの拡張子のないファイルがあるので「exeファイル名.pyc」と拡張子をつけてあげてください。

欠損値の補完

exeファイル名.pycの状態ではバイナリデータが欠損しており、このままデコンパイルするとエラーになります。ここでは詳しいやり方は省略しますが下記のサイトがとても分かりやすいので参考にしてください。しかしデコンパイルの方法は違うので、欠損値を補完したらこのサイトに戻ってきてくださいね。
https://manumaruscript.com/exe-decompile/

デコンパイル

まず初めに下記のライブラリをインストールします。

cmd
>>pip install pydumpck

インストールが完了したら、インストールしたライブラリのフォルダを開きます。

cmd
>>where python
C:\Users\ユーザー名\AppData\Local\Programs\Python\Python37\python.exe

実行するとpythonの実行ファイルのパスが出てくるので
「C:\Users\ユーザー名\AppData\Local\Programs\Python\Python37\」に「Lib\site-packages\pydumpck\pyc_checker\lib_pycdc\pycdc.exe」を加え、パスを作成します。

そのパスを下記のようにcmdに入力し、デコンパイルを行います。

cmd
>>C:\Users\ユーザー名\AppData\Local\Programs\Python\Python37\Lib\site-packages\pydumpck\pyc_checker\lib_pycdc\pycdc.exe exeのファイル名.pyc

実行するとコンソール上にソースコードが表示されるはずです。
もし一部文字化けしている場合は、

cmd
>>chcp 65001

と入力し、再度デコンパイルを行うと正しく表示されるかと思います。

番外編

デコンパイル中に下記のエラーが発生した場合は、バイナリでPythonのバージョンを表す先頭2文字を「61」から「55」に変更することで解決する可能性が高いです。55はPython3.8のバージョンを表しています。
スクリーンショット 2023-10-25 200357.png

まとめ

久しぶりに作成したので綺麗ではありませんが、皆さんのお役に立つことを願っています。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1