今天手賤,不小心刪了辛辛苦苦寫的py文件。但還好在刪之前打包了exe,而且不是加密打包,所可以反編譯源碼出來。
1、先準備一個pyinstxtractor.py文件,用來把exe解析成pyd
源碼如下:
2、把它放到要反編譯的exe所在位置
3、在命令窗口輸入:
pythonpyinstxtractor.pyxxx.exe
4、在目錄下生成反編譯後的文件:xx.exe_extracted
生成拆解目錄如下:
--- xxx.exe_extracted-- out00-PYZ.pyz_extracted - 各種.pyc文件-- out00-PYZ.pyz-- some-- others-- xxx(注意這些都是沒後綴的)
5、PYZ-00.pyz_extracted文件夾內是import的文件
6、安裝uncompyle反編譯需要的.pyc文件為.py
pip install uncompyle
7、找到之前的文件(我這裡是main),對比其他.pyc文件,修改main文件,在它前面加上一點內容:
8、改完後保存,並修改後綴為.pyc
9、將pyc反編譯為py文件,輸入命令:
uncompyle6main.pyc > output.py
10、在目錄下生成output.py,即為源碼文件
11、運行生成的py文件可能會報格式錯誤,可以新建一個py文件再把內容複製進去
12、運行,正常
如何防止被反編譯?
打包時候加上密碼,讓pyc變為pyd,命令如下:
pyinstaller-F--key 123 xxx.py
--key後面跟的是你的密碼