中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

反編譯pyinstaller產生的可執行文件是什么

發布時間:2021-10-20 17:29:45 來源:億速云 閱讀:158 作者:柒染 欄目:大數據

今天就跟大家聊聊有關反編譯pyinstaller產生的可執行文件是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

  在一次計算中使用別人發布的由python編寫然后編譯打包的二進制程序進行操作時,總是報錯”缺少鏈ID”,但檢查pdb文件已經添加了鏈ID。
  為查明報錯原因,對此二進制可執行文件進行了反編譯。下面記錄了操作過程:

  python是解釋型語言,故python編譯打包成的可執行文件很容易被反編譯,而像C,C++這樣的編譯型語言得到的可執行文件,則較難被反編譯。
  反編譯pyinstaller 產生的可執行文件,可以分為兩個步驟,一是由可執行文件獲取pyc(pyo)文件,二是由pyc(pyo)文件得到py文件。

獲取pyc文件

  在Linux上運行pyintaller打包的可執行文件時,它會將打包好的文件解壓到臨時文件夾(/tmp)中的_MEIxxxxxx 路徑中暫時存放,執行完畢之后再刪除,所以會存在解壓縮的時間。然而這個_MEIxxxxxx路徑中主要是.so文件,并不含有源碼。
  但是pyinstaller自帶腳本archive_viewer.py,可以由可執行文件解壓得到pyc文件:

1
python archive_viewer.py exefilename

一共有四個可用命令:

1
2
3
4
U: go Up one level
O <name>: open embedded archive name
X <name>: extract name
Q: quit

  列表中有兩個部分需要關注,一個是out00-PYZ.pyz,其中包含主程序引用到的所有庫;一個是主程序對應的文件名,其中會包含主程序。
  比如,一個顯示天氣的程序,其主程序名稱為show.py,其中調用了calc.py,則需要

1
2
x show 提取到 show.pyc 
o out00-PYZ.pyz 然后查看調用的庫,然后 x calc 提取到 calc.pyc

  這樣我們就得到了show.pyccalc.pyc

從pyc獲取py文件

方法

方法比較多,比如

  1. 在線程序,比如python反編譯,在線pyc反編譯等

  2. uncompyle6,是python腳本,故而可以批量運行,使用方法為 uncompyle6 file.pyc

  3. easypythondecompiler等

注意

  pyinstaller編譯成pyc時,會把pyc的magic value去掉,如果使用easypythondecompiler的話,需要再把magic value補上(使用 010 Editor 編輯器)。magic value一共8個字節,前四個對應于編譯時所用python的版本,后四個對應于編譯時間,比如python2.7 的03 f3 0d 0a 01 23 45 67,python3.4 的ee 0c 0d 0a 01 23 45 67.如果不知道編譯時所用的python版本,可以通過一個trick來尋找:在可執行文件包含的前幾個文件對應的pyc文件(比如 pyimod01_os_path)中,前4個字節已經存在。
  如此,便可反編譯出show.pycalc.py等文件。

看完上述內容,你們對反編譯pyinstaller產生的可執行文件是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

哈尔滨市| 容城县| 巴青县| 舞钢市| 奉节县| 安龙县| 广元市| 无为县| 察哈| 大悟县| 长治县| 喀什市| 潮安县| 泽州县| 上饶市| 贵南县| 池州市| 大英县| 囊谦县| 故城县| 尤溪县| 江油市| 梧州市| 长顺县| 吉隆县| 康乐县| 定结县| 盐亭县| 从化市| 光山县| 肇东市| 突泉县| 汽车| 道真| 富民县| 潜江市| 乌拉特中旗| 德化县| 伊通| 天长市| 河北区|