反編譯python編寫的exe文件的詳細(xì)方法

因?yàn)閜ython是解釋型語言,所以反編譯的難度相對(duì)于其他編譯型的語言低了很多

總的來說,反編譯分為兩步:

1、將.exe反編譯成.pyc的二進(jìn)制文件
2、將.pyc文件反編譯成.py文件

接下來具體說一下步驟:

一、將.exe反編譯成.pyc的二進(jìn)制文件

1、獲取archive_viewer.py文件

這個(gè)文件在pyinstaller庫里,還沒有安裝的需要安裝一下(已經(jīng)安裝的跳過安裝)

pip install pyinstaller

安裝完成后在python安裝路徑下的\Lib\site-packages文件夾搜索archive_viewer.py文件

搜索文件

找到文件后可以復(fù)制到你想要放置的位置(不復(fù)制也行)

2、反編譯出archive_viewer.pyc文件
python archive_viewer.py your_app.exe

這一步會(huì)把編譯出的文件都羅列出來,像這樣


image.png

但是我們只需要找到我們exe對(duì)應(yīng)的名字的文件就好了,確認(rèn)存在之后滑到最下面,會(huì)發(fā)現(xiàn)有個(gè)?號(hào)用于輸入接下來的命令,在這邊我們輸入

x your_app(your_app是exe文件的文件名,不帶.exe后綴)

會(huì)顯示 to filename?讓你輸入需要輸出的pyc文件名稱,這邊輸入 your_app.pyc回車就好了
接下來又會(huì)顯示?號(hào),接著輸入x struct回車,輸入struct文件名稱struct回車

3、修改pyc文件前面字節(jié)

由于用PyInstaller打包后,pyc文件的前8個(gè)字節(jié)會(huì)被抹掉,所以最后要自己添加回去。前四個(gè)字節(jié)為python編譯的版本,后四個(gè)字節(jié)為時(shí)間戳。
這邊使用Hex Editor Neo軟件同時(shí)打開.pyc文件和struct文件,復(fù)制struct文件前面8個(gè)字節(jié)插入到.pyc文件的前面:

1)復(fù)制struct文件前8個(gè)字節(jié)
image.png
2)在pyc文件中右鍵選擇insert模式
3)選中第一個(gè)字節(jié),輸入八個(gè)空字節(jié)00
4)選中插入的前八個(gè)字節(jié),右擊粘貼
5)保存pyc文件

這樣我們就得到了完整的pyc文件

4、使用uncompyle 反編譯出py文件

安裝uncompyle庫

pip install uncompyle6

反編譯

uncompyle6 your_app.pyc > your_app.py
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容