亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python程序編譯與反編譯問題

 更新時間:2024年06月21日 09:27:29   作者:努力養(yǎng)豬致富的傻子  
這篇文章主要介紹了Python程序編譯與反編譯問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

前言

Python 通過pyinstaller 打包編譯成exe可執(zhí)行文件 ,反編譯exe文件。

提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、通過 pyinstaller 打包

雖然python是跨平臺的一門開發(fā)語言,但是有時候在沒安裝python環(huán)境的計算機中仍然不能運行python程序。因此,就少不了編譯打包的工序,其中用的最多且最簡單的就是pyinstaller了

附上官網(wǎng)鏈接: pyinstaller文檔

1.安裝pyinstaller

# 通過pip 安裝pyinstaller 第三方模塊
pip install pyinstaller
或
# 網(wǎng)速不行的話,可以考慮國內(nèi)源,這里以清華源為例
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple

2. 開始打包

初始代碼,之前做數(shù)據(jù)采集的腳本。

主要用到三個自定義文件,

  • main.py, 主函數(shù)文件
  • batchSolution.py, 數(shù)據(jù)清洗文件
  • getCookiesBySelenium.py 獲取授權(quán)cookies文件

# 在相關(guān)路徑下,命令行輸入 ,-F 生成一個exe繼承文件,其他相關(guān)參數(shù)作用,請去官方文檔研究
pyinstaller -F main.py

之后在該路徑下會生成相關(guān)文件夾,其中main.exe文件會存在dist文件夾中。

如果打包過程沒有中斷報錯,該文件可以運行在無python環(huán)境的windows計算機中。如果有報錯,谷歌搜索基本都可以解決,遇到過幾次,循環(huán)迭代太大,多進程程序打包后只能單進程執(zhí)行等問題。

二、反編譯Pyinstaller 打包的exe程序

1. 通過 pyinstxtractor.py 把exe 轉(zhuǎn) pyc文件

pyinstxtractor.py 是一個用于反編譯pyinstaller 所打包exe的文件工具,在開源社區(qū)可以找到下載鏈接。

通過命令行執(zhí)行相關(guān)命令,完成反編譯成pyc文件

# 通過命令行
python .\pyinstxtractor.py .\main.exe

其中要注意:建議用相同版本的python執(zhí)行操作!官方也這樣建議!

python3.7.6 打包的exe文件

筆者親試,

失??!python3.6.8 運行命令行反編譯,有個import 的自定義文件沒生成成功。

失敗!python3.8 運行命令行反編譯,可以完美還原三個pyc文件,但是后續(xù)pyc轉(zhuǎn)py還是有問題。

最后,還是在python3.7.6 運行命令行反編譯,相對就一路綠燈!

2. 找到相關(guān)pyc文件

運行上面腳本命令后,會在相應(yīng)目錄生成很多相關(guān)文件,我們只關(guān)注extracted結(jié)尾文件夾即可,注意可能不止一層,筆者這邊是兩層,即extracted結(jié)尾文件夾里面又有一個extracted結(jié)尾文件夾。

extracted結(jié)尾文件夾,筆者推測,都是我們主程序中import 的各種文件,因此也會有很多官方的第三方庫pyc文件。

因此只能從筆者習慣寫的main.py 編譯的main.pyc文件開始分析,哪些是我們自定義的文件。

3. 把相關(guān)pyc文件轉(zhuǎn)py

通過在線 pyc 轉(zhuǎn) py 的一些工具網(wǎng)站,可以實現(xiàn)源碼復現(xiàn)

http://tools.bugscaner.com/decompyle/

https://tool.lu/pyc/

當然也可以通過 uncompyle6 第三方庫實現(xiàn)復現(xiàn),筆者自定義文件較少,用了在線轉(zhuǎn)換工具實現(xiàn)復現(xiàn)main.py 文件。

  • 通過復現(xiàn)后的main.py 文件,即可找到相應(yīng)import的自定義文件,以及程序?qū)氲牡谌桨?/li>
  • 注意要去所有的extracted結(jié)尾文件夾查找,筆者是在第二層內(nèi)找到相關(guān)文件的。

最后把相應(yīng)的自定義文件拷貝下來,逐一復現(xiàn)即可。

源程序就成功還原了!當然程序內(nèi)的中文編碼可能會出現(xiàn)亂碼,以及程序小部分復現(xiàn)問題,會代碼的可以很快解決。

三、總結(jié)

在于版本問題,導致反編譯中途試錯多次

很難區(qū)分自定義文件pyc和官方文件pyc,因為筆者有個人習慣會設(shè)置main.py為入口程序才有思路

pyinstaller 打包的時候,沒加密,對于一些隱私程序也是相對不夠安全的。官方提供了加密參數(shù),以及相關(guān)論壇也給了很多個性化加密方式,后續(xù)可以繼續(xù)學習

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論