最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中exe文件解包方法詳解

 更新時間:2023年06月26日 08:53:30   作者:波波的私人筆記  
這篇文章主要給大家介紹了關于python中exe文件解包方法的相關資料,文中通過圖文以及實例代碼介紹的非常詳細,對大家學習或者使用python具有一定的參考學習價值,需要的朋友可以參考下

技術背景

目前針對Python中主流的加密方案有以下幾種:

序號工具方法描述優(yōu)缺點
1Nuitka.py 文件先被轉(zhuǎn)成了 .c 文件,然后被編譯成 .o 文件,最后合并成 .bin 可執(zhí)行文件,從 bin 到 C 是不可逆的,從 C 到 Python 也是不可逆的,因此代碼是安全的工作量小,安全性高,使用加密之后的Python便捷;編譯時間長,過程復雜
2發(fā)行.pyc文件通過compileall模塊將.py文件轉(zhuǎn)為.pyc文件,該文件是二進制,無法直接看源代碼,而python解釋器可以直接執(zhí)行.pyc文件臺兼容性好,.py 能在哪里運行,.pyc 就能在哪里運行;解釋器兼容性差,.pyc 只能在特定版本的解釋器上運行。有現(xiàn)成的反編譯工具,破解成本低
3代碼混淆(oxyry,pyobfuscate)讓人看不懂代碼,移除注釋和文檔,改變縮進,在tokens中間加入一定空格,重命名函數(shù)、類、變量,在空白行插入無效代碼提高了一點源碼破解門檻。兼容性好,只要源碼邏輯能做到兼容,混淆代碼亦能;只能對單個文件混淆,無法做到多個互相有聯(lián)系的源碼文件的聯(lián)動混淆
4py2exe將源碼編譯為 .pyc 文件,加之必要的依賴文件,一起打包成一個可執(zhí)行文件。最終 py2exe 打包出的是二進制文件。直接打包成 exe,方便分發(fā)和執(zhí)行。破解門檻比 .pyc 更高一些;兼容性差,只能運行在 Windows 系統(tǒng)上。生成的可執(zhí)行文件內(nèi)的布局是明確、公開的,可以找到源碼對應的 .pyc 文件,進而反編譯出源碼。
5Cython將 .py/.pyx 編譯為 .c 文件,再將 .c 文件編譯為 .so(Unix) 或 .pyd(Windows)生成的二進制 .so 或 .pyd 文件難以破解。同時帶來了性能提升;兼容性稍差,對于不同版本的操作系統(tǒng),可能需要重新編譯。雖然支持大多數(shù) Python 代碼,但如果一旦發(fā)現(xiàn)部分代碼不支持,完善成本較高。
6Pyinstaller打包為exe文件,將Python文件轉(zhuǎn)換為exe文件,以及dist文件夾和build文件夾,如果要移植到其他電腦上運行,也是只需要將這兩個文件夾復制到對方電腦上,即使對方?jīng)]有python環(huán)境,也可以運行程序,具有較好的兼容性;pyinstxtractor.py可以進行反編譯

對于上述這些加密,在工作中,常見將一些Python寫的腳本、程序使用Pyinstaller打包為exe文件的居多,因為即使對方?jīng)]有python環(huán)境,也可以運行程序,具有較好的兼容性。

想要了解這些腳本、程序的邏輯、對其功能進行分析,最好的方法是其進行反編譯解包。

解包思路

1.對exe文件進行解包

方法1:使用pyinstxtractor.py

執(zhí)行python pyinstxtractor.py <待解包文件名> ,如果成功,即可獲得<待解包文件名>_extracted 文件夾。

方法2:使用archive_viewer.py

執(zhí)行python archive_viewer.py <待解包文件名> ,會打印EXE文件中包含的所有文件信息

使用x <文件名>命令將想要提取出的文件提取出來,q 命令退出。

區(qū)別:

方法1 可以一次性提取出所有文件,方法2只能逐個提取文件。但是在個人使用時,同時執(zhí)行時會提示python版本問題,想要正常解包必須使用正確的python版本。

方法2 的成功率相對較高??梢韵葒L試用方法1,失敗后用方法2。

2.構建pyc文件

從步驟1中獲得的文件是pyc文件,我們還需要進一步反編譯獲得py文件。在將Python文件打包成exe文件的過程中,會抹去pyc文件前面的部分信息,所以我們在反編譯之前需要檢查并添加上這部分信息。抹去的信息內(nèi)容可以從struct文件中獲取:

 可能會出現(xiàn)兩種情況:

 情況一struct 文件中, E3 前 有內(nèi)容

 這種情況將struct 文件中,E3 之前的 所有內(nèi)容,復制到目標文件 E3 之前。

 情況二struct 文件中, E3 前 無內(nèi)容

 遇到這種情況后,在前面步驟1中,找到PYZ-00.pyz_extracted文件夾中任意一個pyc文件,記住前面的4個字節(jié),在目標文件第一行輸入前4個字節(jié),后續(xù)補0。

 將目標文件后綴名改為“.pyc”

3.對pyc文件進行反編譯

安裝uncompyle6后,去dos界面,輸入uncompyle6 路徑+文件名.pyc > 文件名.py

沒有報錯就表示成功了。

其他問題

q1:提示PYZ文件加密

在解包exe過程中會提示會出現(xiàn)PYZ中的文件無法正常提?。╝rchive_viewer.py),或者提取出來后顯示encrypted(pyinstxtractor.py)的問題

 針對這個問題,可以使用上述方法,重新反編譯PYZ文件的加密密鑰pyimod00_crypto_key.pyc文件,就可以獲得秘鑰。

Pyinstxtractor不支持加密的pyz檔案。目前,可以使用下面的代碼片段來解密pyz提取目錄中的加密pyc。請注意,下面的腳本是為在Python 2.7上運行而編寫的,可以在PyInstaller之前的版本上運行

該腳本可以從任何Python版本反編譯加密的pyc。但是,您需要從下面的列表中適當?shù)馗膒yc頭。具體的事項可以去訪問pyinstxtractor說明文檔:Frequently Asked Questions · extremecoders-re/pyinstxtractor Wiki · GitHub

總結(jié)

到此這篇關于python中exe文件解包方法的文章就介紹到這了,更多相關python exe文件解包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

麻江县| 黑水县| 湖北省| 忻州市| 大足县| 特克斯县| 信阳市| 英吉沙县| 曲阳县| 南召县| 海口市| 新化县| 荆州市| 集贤县| 永康市| 嵊州市| 徐州市| 扬州市| 乌拉特后旗| 葵青区| 孝感市| 克什克腾旗| 千阳县| 楚雄市| 兖州市| 余干县| 丰镇市| 施甸县| 禹州市| 武威市| 沙坪坝区| 连州市| 阳曲县| 噶尔县| 龙山县| 和田县| 黄浦区| 长海县| 民县| 大姚县| 调兵山市|