1. 程式人生 > >python程式反編譯

python程式反編譯

目的:將使用pyinstaller生成的exe還原成.py檔案

1、從生成的exe中提取出.pyc檔案

這裡的方法有很多。。。可以使用pyinstxtractor。。也可以使用官方的archive_viewer.py(文末有下載)

我這裡使用的是官方的archive_viewer.py。。

這裡舉的例子是某個師兄發出來的搶課的程式(python寫的)。。。介面是這樣的

(1)在程式同目錄下開啟cmd。。執行python archive_viewer.py qiangke.exe(這裡是程式的名字)

這裡有四個可以用的命令,分別是:

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

這裡需要注意的一點是主要關注最後一行和出現程式名字的那一行。。。然後輸入命令

x (程式名字) 回車之後輸入需要生成的pyc檔名

至此。。第一步完成。。。

2、反編譯pyc檔案

由於每個pyc檔案都有一個magic head,pyinstaller生成exe的時候會把pyc的magic部分去掉,在反編譯的時候需要自己補齊。python2,需要補8個位元組,後面的4個位元組是時間戳,前面的4個位元組是python編譯的版本。。

當然這裡有個小技巧

前4個位元組可以通過struct檔案獲取

所以前面的是\x03\xf3\x0d\x0a。。後面的時間戳也可以用00 00 00 00代替

接著使用010 editor或者winhex開啟pyc檔案。。新增八個位元組並儲存

3、還原py檔案

(1)可以使用線上網站直接上傳還原。。

(2)使用uncompyle。。。

反編譯:

uncompyle6   -o   .   pyc檔名

說明:

-o後面可以加上檔案路徑,代表反編譯檔案輸出的位置,“.”表示輸出到當前資料夾

反編譯成功後會返回“# Successfully decompiled file”

可以使用uncompyle6 --help檢視其他引數

沒安裝的先使用pip安裝

pip install uncompyle6

然後同目錄下開啟控制檯

uncompyle6 -o . qiangke.pyc

同目錄下就會生成qiangke.py

工具: