一文學(xué)會如何將Python打包后的exe還原成.py
前言
我們介紹過如何將python程序打包為exe可執(zhí)行文件。但有時候會遇到另一種情況,就是我們拿到別人打包好的exe文件,但是我想看看里面源代碼是怎樣的,這個能不能實現(xiàn)呢?
如果是用py打包而成的exe,是可以還原成py文件的,今天我們就給大家分享一下這個過程。
用到的工具
- pyinstxtractor.py 拆包(解壓)工具,將exe文件解壓成一個文件夾
- uncompyle6 pyc反編譯工具
- 010EditorEditor 或者其他二進(jìn)制查看與修改工具,我這里用的010Editor
安裝方法
pip install uncompyle6
第一步:解包
python3 pyinstxtractor.py ***.exe # 這里替換成你要反編譯的exe文件 # 會生成一個以 exe文件名+_extracted 的文件夾,這個就是解包后的數(shù)據(jù)
第二步:添加頭信息
PyInstaller打包后,pyc文件的前8個字節(jié)會被抹掉,所以最后要自己添加回去。前四個字節(jié)為python編譯的版本,后四個字節(jié)為時間戳。想要獲得編譯版本可以查看打包文件里struct的信息
1). 進(jìn)入文件夾,找到以exe文件名命名的文件(沒有后綴),這個就是目的文件
2). 用 010Editor 打開 struct,前八位就是我們想要的信息,將其復(fù)制
3). 用 010Editor 打開目的文件我這里是 abc_text,將上一步復(fù)制的信息插入到開頭
修改前:
修改后:
4). 將目的文件我這里是 abc_text,添加pyc的后綴
第三步:逆向目的文件.pyc
1). 其實這里已經(jīng)可以使用了。了解python的都知道pyc是py文件編譯后的二進(jìn)制文件,因此如果想要分析源碼還得繼續(xù)逆向成.py文件
2). uncompyle6逆向pyc文件
uncompyle6 abc_text.pyc > abc_text.py
如此就成功逆向還原出py文件。
總結(jié)
到此這篇關(guān)于如何將Python打包后的exe還原成.py的文章就介紹到這了,更多相關(guān)Python打包后exe還原成.py內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
為什么在函數(shù)中運行的?Python?代碼速度更快?
對于Python解釋器來說,讀取和寫入局部變量比全局變量更容易和更快,因為它們的作用域范圍較小2023-09-09