Pyinstaller打包exe的反編譯——LitCTF 2024(公開賽道)ezpython!!!!!

demo41發表於2024-06-01

這個工具折磨了我很久,搭配題目記錄一下...

題目

Die

打包工具: PyInstaller

建議下載GitHub的:GitHub - extremecoders-re/pyinstxtractor: PyInstaller Extractor

單獨的一個 pyInstaller.py 會很麻煩

步驟:

將exe拖到pyinstxtractor-master資料夾下面,開啟cmd

python pyinstxtractor.py ezpy.exe

成功的話會出現一個類似ezpy.exe_extracted這樣字尾的資料夾

點進去,能在檔案下找到與exe同名的pyc檔案

在早些的版本中,XX.exe_extracted檔案下,是一個同名的無字尾的檔案,需要我們自己補上

注意!!!你要確保使用工具的環境是和Python version一樣(我這裡是需要3.11)

不然,ezpy.exe_extracted資料夾點進去,類似PYZ-00.pyz_extracted的資料夾會是空的!!

不過資料夾下同名的檔案ezpy.pyc倒是不影響反編譯成py

我使用的是新版本的pyinstxtractor,不用補magic

在Python3.7及以上版本的編譯後二進位制檔案中,頭部除了四位元組Magic Number,還有四個位元組的空位和八個位元組的時間戳+大小資訊,後者對檔案反編譯沒有影響,全部填充0即可;
Python3.3 - Python3.7(包含3.3)版本中,只需要Magic Number和八位時間戳+大小資訊
Python3.3 以下的版本中,只有Magic Number和四位時間戳。
———————————————

原文連結:https://blog.csdn.net/Myon5/article/details/134538103

本題目用uncompyle6反編譯會報錯(就是這裡坑了我很久)

我沒有pycdc,所以找了一個線上反編譯工具

這裡推薦兩個(第一個有次數限制,第二個沒有):

python反編譯 - 線上工具 (tool.lu)

Pyc 轉 Py - 百川線上工具箱 (chaitin.cn)

反編譯ezpy.pyc

就是一個base64,肯定是換了表

發現需要 Litctfbase64 模組,這個是出題人自己定義的

PYZ-00.pyz_extracted 資料夾中找到

PYZ-00.pyz_extracted非常重要,一般一個稍微大一點的專案都會分成多個py檔案,甚至會依賴其他模組,這些被依賴的檔案解析後都會放入PYZ-00.pyz_extracted中,可以說這裡放的是核心程式碼。

反編譯Litctfbase64.pyc

得到了base64的換表

找一個線上自定義base64編解碼網站

推薦:線上自定義base64編解碼、線上二進位制轉可列印字元、線上base2、base4、base8、base16、base32、base64--查錯網 (chacuo.net)

flag

LitCTF{61happy_LitCTF_nice_base64}

相關文章