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
工具: