欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python程序編譯與反編譯問題

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

前言

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

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

一、通過 pyinstaller 打包

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

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

1.安裝pyinstaller

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

2. 開始打包

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

主要用到三個(gè)自定義文件,

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

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

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

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

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

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

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

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

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

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

python3.7.6 打包的exe文件

筆者親試,

失?。ython3.6.8 運(yùn)行命令行反編譯,有個(gè)import 的自定義文件沒生成成功。

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

最后,還是在python3.7.6 運(yùn)行命令行反編譯,相對(duì)就一路綠燈!

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

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

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

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

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

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

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

https://tool.lu/pyc/

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

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

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

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

三、總結(jié)

在于版本問題,導(dǎo)致反編譯中途試錯(cuò)多次

很難區(qū)分自定義文件pyc和官方文件pyc,因?yàn)楣P者有個(gè)人習(xí)慣會(huì)設(shè)置main.py為入口程序才有思路

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

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

相關(guān)文章

最新評(píng)論