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

python中exe文件解包方法詳解

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

技術(shù)背景

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

序號工具方法描述優(yōu)缺點
1Nuitka.py 文件先被轉(zhuǎn)成了 .c 文件,然后被編譯成 .o 文件,最后合并成 .bin 可執(zhí)行文件,從 bin 到 C 是不可逆的,從 C 到 Python 也是不可逆的,因此代碼是安全的工作量小,安全性高,使用加密之后的Python便捷;編譯時間長,過程復(fù)雜
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)的布局是明確、公開的,可以找到源碼對應(yīng)的 .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文件夾,如果要移植到其他電腦上運行,也是只需要將這兩個文件夾復(fù)制到對方電腦上,即使對方?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 的成功率相對較高。可以先嘗試用方法1,失敗后用方法2。

2.構(gòu)建pyc文件

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

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

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

 這種情況將struct 文件中,E3 之前的 所有內(nèi)容,復(fù)制到目標文件 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é)

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

相關(guān)文章

  • python中圖像通道分離與合并實例

    python中圖像通道分離與合并實例

    今天小編就為大家分享一篇python中圖像通道分離與合并實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python3 全自動更新已安裝的模塊實現(xiàn)

    Python3 全自動更新已安裝的模塊實現(xiàn)

    這篇文章主要介紹了Python3 全自動更新已安裝的模塊實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • 如何在 Django 模板中輸出

    如何在 Django 模板中輸出 "{{"

    這篇文章主要介紹了如何在 Django 模板中輸出 "{{" ,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • python用戶評論標簽匹配的解決方法

    python用戶評論標簽匹配的解決方法

    這篇文章主要為大家詳細介紹了python用戶評論標簽匹配的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Python 多線程處理任務(wù)實例

    Python 多線程處理任務(wù)實例

    這篇文章主要介紹了Python 多線程處理任務(wù),下面文章利用一個真實實例圍繞Python 多線程處理任務(wù)的相關(guān)資料展開內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • python 如何去除字符串頭尾的多余符號

    python 如何去除字符串頭尾的多余符號

    這篇文章主要介紹了python 如何去除字符串頭尾的多余符號,在python開發(fā)中經(jīng)常會遇到這樣的需求,今天小編通過實例代碼給大家講解,需要的朋友可以參考下
    2019-11-11
  • python全棧要學什么 python全棧學習路線

    python全棧要學什么 python全棧學習路線

    在本文中小編給大家整理了關(guān)于python全棧要學什么以及python全棧學習路線的知識點內(nèi)容,需要的朋友們參考下。
    2019-06-06
  • Python中類變量和實例變量的區(qū)別

    Python中類變量和實例變量的區(qū)別

    這篇文章主要介紹了Python中類變量和實例變量的區(qū)別,文章針對Python類變量和實例變量的問題,給出了具體說明和演示,需要的小伙伴可以參考一下
    2022-02-02
  • Python中4種實現(xiàn)數(shù)值的交換方式

    Python中4種實現(xiàn)數(shù)值的交換方式

    這篇文章主要介紹了Python中4種實現(xiàn)數(shù)值的交換方式,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • Django實現(xiàn)學員管理系統(tǒng)

    Django實現(xiàn)學員管理系統(tǒng)

    這篇文章主要為大家詳細介紹了Django實現(xiàn)學員管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02

最新評論