這個工具折磨了我很久,搭配題目記錄一下...
題目
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}