首頁 > 軟體

一文學會如何將Python打包後的exe還原成.py

2022-11-17 14:00:53

前言

我們介紹過如何將python程式打包為exe可執行檔案。但有時候會遇到另一種情況,就是我們拿到別人打包好的exe檔案,但是我想看看裡面原始碼是怎樣的,這個能不能實現呢?

如果是用py打包而成的exe,是可以還原成py檔案的,今天我們就給大家分享一下這個過程。

用到的工具

  • pyinstxtractor.py 拆包(解壓)工具,將exe檔案解壓成一個資料夾
  • uncompyle6 pyc反編譯工具
  • 010EditorEditor 或者其他二進位制檢視與修改工具,我這裡用的010Editor

安裝方法

pip install uncompyle6

第一步:解包

python3 pyinstxtractor.py ***.exe   #  這裡替換成你要反編譯的exe檔案
#  會生成一個以 exe檔名+_extracted 的資料夾,這個就是解包後的資料

第二步:新增頭資訊

PyInstaller打包後,pyc檔案的前8個位元組會被抹掉,所以最後要自己新增回去。前四個位元組為python編譯的版本,後四個位元組為時間戳。想要獲得編譯版本可以檢視打包檔案裡struct的資訊

1). 進入資料夾,找到以exe檔名命名的檔案(沒有字尾),這個就是目的檔案

2). 用 010Editor 開啟 struct,前八位就是我們想要的資訊,將其複製

3). 用 010Editor 開啟目的檔案我這裡是 abc_text,將上一步複製的資訊插入到開頭

修改前:

修改後:

4). 將目的檔案我這裡是 abc_text,新增pyc的字尾

第三步:逆向目的檔案.pyc

1). 其實這裡已經可以使用了。瞭解python的都知道pyc是py檔案編譯後的二進位制檔案,因此如果想要分析原始碼還得繼續逆向成.py檔案

2). uncompyle6逆向pyc檔案

uncompyle6 abc_text.pyc > abc_text.py

如此就成功逆向還原出py檔案。

總結

到此這篇關於如何將Python打包後的exe還原成.py的文章就介紹到這了,更多相關Python打包後exe還原成.py內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com