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

python exe文件解包方法總結(jié)

 更新時間:2025年03月18日 09:18:06   作者:大牛軟件開發(fā)  
這篇文章總結(jié)了如何從Python EXE文件中提取和反編譯Python腳本(.pyc文件)的過程,包括使用pyinstxtractor.py或archive_viewer.py進(jìn)行解包,感興趣的小伙伴跟著小編一起來看看吧

注:

除特別說明外,下面使用的python版本均為3.8.6

一、步驟

1. exe → pyc

方法1:pyinstxtractor.py

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

注:執(zhí)行時會提示python版本問題,想要正常解包必須使用正確的python版本。

方法2:archive_viewer.py

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

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

兩者的區(qū)別

方法1可以一次性提取出所有文件,方法2只能逐個提取文件。但是在個人使用時,方法2的成功率相對較高??梢韵葒L試用方法1,失敗后用方法2。

2. pyc → py

步驟1獲得的文件是pyc文件,還需要進(jìn)一步反編譯獲得py文件。

注:我遇到過直接獲得py文件的情況,所以在反編譯之前可以先查看一下是不是已經(jīng)成功了。

2.1 pyc文件恢復(fù)

注:最新版pyinstxtractor.py支持自動恢復(fù)pyc,但是經(jīng)實驗不能保證準(zhǔn)確性?;蛘哒f需要使用準(zhǔn)確的python版本才行。

在將python文件打包成exe文件的過程中,會抹去pyc文件前面的部分信息,所以在反編譯之前需要檢查并添加上這部分信息。

抹去的信息內(nèi)容可以從struct文件中獲?。?/p>

struct文件:

struct文件

pyc文件:

pyc文件

Q1:需要添加多少字節(jié)?

多個參考文章中提到的添加字節(jié)數(shù)都不一致,這應(yīng)該與使用的python版本有關(guān)。但是在已知的幾個例子中,可以看出pyc文件開頭的幾個字節(jié)與struct文件中的字節(jié)是一樣的。比如說上圖中pyc文件是以E3 00 00 00開頭,而這部分字節(jié)就和struct文件的第二行起始字節(jié)相同。

因此在此例中,需要復(fù)制添加的字節(jié)就是struct文件中第一行的16個字節(jié)

Q2:添加的方法是什么?

在010editor中,選擇Edit→Insert/Overwrite→InsertBytes,Start Address填0,Size填16。

然后將字節(jié)復(fù)制進(jìn)去即可。

2.2 反編譯

反編譯工具

  • Easy Python Decompiler
    這是一個GUI界面的可執(zhí)行文件,下載下來直接用就可以,但是并不是每次都能成功,有些magic value不能識別。
  • uncompyle6
    該工具需要使用pip安裝,使用腳本執(zhí)行。成功率較高。

反編譯提示magic value有問題怎么辦?

在上面我們添加的16個字節(jié)中,前四個字節(jié)表示的就是magic value,其中前兩個字節(jié)表示的是python的版本號,一般來說magic value的問題就是版本號有問題,編譯工具沒有識別出來該版本號表示的python版本。

如果使用的是Easy Python Decompiler,那么就可以直接轉(zhuǎn)用uncompyle6了。

如果用的已經(jīng)是uncompyle6,那么需要先看一下它可以識別的版本號都有哪些,這個信息可以在xdis包的magics.py文件中找到,具體方法如下:

  • 命令行輸入pip install xdis,查看其安裝位置

圖片描述

  • 到該目錄下,打開xdis文件夾下的magics.py文件
  • 確定需要識別的版本號
  • 就是之前添加的16個字節(jié)的前兩個字節(jié),此例中為0D42,需要轉(zhuǎn)換為十進(jìn)制,就是3394
  • 查看magics.py中是否有該版本號。

我這里一開始沒有發(fā)現(xiàn)這個版本號

圖片描述

我的解決方法

我在谷歌上搜索了int2magic(3394),找到了這個Github項目

下載下來,按照介紹進(jìn)行安裝。

在執(zhí)行pip install -e .的時候,提示我xdisuncompyle6的版本不匹配,于是卸載了uncompyle6,又重新安裝了一次。

目前的版本:xdis 5.0.5 uncompyle6 3.7.4

查看該版本xdismagics.py文件:

圖片描述

可以看到已經(jīng)有3394了。

反編譯:

圖片描述

成功!

注:pyc文件一定要有后綴名pyc,不然會報錯

二、PYZ文件的加密問題

有些時候在步驟1 exe→pyc的過程中,會出現(xiàn)PYZ中的文件無法正常提?。╝rchive_viewer.py),或者提取出來后顯示encrypted(pyinstxtractor.py)的問題。

這個問題可以使用參考文章2和3中的方法解決:

PYZ文件加密的密鑰保存在pyimod00_crypto_key文件中,該文件也是一個pyc文件,可以使用上面介紹的方法進(jìn)行反編譯,然后就可以獲得密鑰:

圖片描述

之后的解密腳本有三個可供選擇,均在參考文章3中,根據(jù)pyinstaller的版本不同選擇不同的腳本,使用時需要替換其中的key、header以及待解密文件名和目標(biāo)文件名,執(zhí)行后即可獲得解密后的pyc文件,再使用uncompyle6反編譯即可。

注:這三個腳本中,第一個腳本適用于PyInstaller<4.0,使用python2執(zhí)行;第二個和第三個腳本適用于PyInstaller≥4.0,使用python3執(zhí)行。

圖片描述

以上就是python exe文件解包方法總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于python exe文件解包的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python 的 f-string 可以連接字符串與數(shù)字的原因解析

    Python 的 f-string 可以連接字符串與數(shù)字的原因解析

    這篇文章主要介紹了Python 的 f-string 可以連接字符串與數(shù)字的原因解析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • Python基于pyopencv人臉識別并繪制GUI界面

    Python基于pyopencv人臉識別并繪制GUI界面

    本文詳細(xì)講解了Python基于pyopencv人臉識別并繪制GUI界面,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • Python DES加密實現(xiàn)原理及實例解析

    Python DES加密實現(xiàn)原理及實例解析

    這篇文章主要介紹了Python DES加密實現(xiàn)原理及實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • PyCharm刷新項目(文件)目錄的實現(xiàn)

    PyCharm刷新項目(文件)目錄的實現(xiàn)

    今天小編就為大家分享一篇PyCharm刷新項目(文件)目錄的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 一文帶你掌握Python中文件I/O的使用技巧

    一文帶你掌握Python中文件I/O的使用技巧

    Python提供了強(qiáng)大而靈活的文件I/O(輸入/輸出)工具,能夠讀取、寫入和處理各種文件類型,本文將詳細(xì)介紹Python文件I/O的使用技巧,需要的可以參考一下
    2023-12-12
  • Python中文檔生成利器Sphinx的入門指南

    Python中文檔生成利器Sphinx的入門指南

    在Python開發(fā)過程中,良好的文檔是項目成功的關(guān)鍵之一,Sphinx是一個強(qiáng)大的文檔生成工具,本文將為大家詳細(xì)介紹Sphinx的具體使用,需要的可以參考下
    2025-01-01
  • Python文檔生成工具pydoc使用介紹

    Python文檔生成工具pydoc使用介紹

    這篇文章主要介紹了Python文檔生成工具pydoc使用介紹,本文講解了基本用法、獲取幫助的方法、生成的文檔效果圖等內(nèi)容,需要的朋友可以參考下
    2015-06-06
  • python3 http提交json參數(shù)并獲取返回值的方法

    python3 http提交json參數(shù)并獲取返回值的方法

    今天小編就為大家分享一篇python3 http提交json參數(shù)并獲取返回值的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • PySpark與GraphFrames的安裝與使用環(huán)境搭建過程

    PySpark與GraphFrames的安裝與使用環(huán)境搭建過程

    這篇文章主要介紹了PySpark與GraphFrames的安裝與使用教程,本文通過圖文并茂實例代碼相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • pandas 數(shù)據(jù)類型轉(zhuǎn)換的實現(xiàn)

    pandas 數(shù)據(jù)類型轉(zhuǎn)換的實現(xiàn)

    這篇文章主要介紹了pandas 數(shù)據(jù)類型轉(zhuǎn)換的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評論

广宗县| 淮安市| 灵璧县| 兴仁县| 延安市| 新巴尔虎左旗| 社旗县| 武乡县| 浙江省| 宝丰县| 襄城县| 沙洋县| 钟祥市| 当阳市| 封丘县| 尚志市| 平泉县| 尖扎县| 海兴县| 中西区| 屏山县| 昌邑市| 黑山县| 玛纳斯县| 图片| 石家庄市| 米林县| 东源县| 瑞昌市| 定州市| 隆昌县| 常熟市| 渭源县| 东山县| 昔阳县| 双峰县| 乐亭县| 梅州市| 临海市| 甘孜县| 凤山市|