exe反编译_反编译Python生成exe软件(Py3-polySML)
反編譯對(duì)象為一篇文獻(xiàn)上的軟件,反編譯只是為了了解一些源代碼的邏輯。
過(guò)程參考文章:python3.7.4反編譯生成的.exe
反編譯對(duì)象:polySML
此對(duì)象為python打包,且未進(jìn)行加密加殼軟件,僅為學(xué)術(shù)使用
使用工具
- python文件:pyinstxtractor
- 16進(jìn)制編輯器:010 Editor
- python包:uncompyle
大致流程:
- 通過(guò)pyinstxtractor將exe的內(nèi)容文件提取出來(lái)
- 使用010 Editor將pyc文件缺失部分補(bǔ)充完整
- 使用uncompyle將pyc反編譯為py文件
1.拆解exe為pyc文件
- 將所需拆解的exe與pyinstxtractor文件放置在同一目錄中
- 在PowerShell中運(yùn)行
當(dāng)最后一行表明"Successfully ..."則拆解完成,個(gè)人認(rèn)為其中最后一個(gè)"Possible entry point: MatML_no_comments"為個(gè)人編寫的主要程序, 也可以根據(jù)對(duì)于python包的名字的掌握進(jìn)行推斷.
2.獲得pyc文件
在拆解的文件夾里找到無(wú)后綴名的文件, 這些文件除了struct都是pyc文件, 但是都有缺失, 需要進(jìn)行修復(fù).
關(guān)注的是作者編寫的主文件, 至于其他庫(kù)文件不關(guān)注.
使用010 Editor打開"MatML_no_comments"和"struct"文件
在"struct"文件中找到"MatML_no_comments"文件開頭的地方(即紅色框), 將紅色框前面的內(nèi)容從"struct"中復(fù)制到"MatML_no_comments"(即藍(lán)色框), 使下圖的框內(nèi)信息完全一致.
保存"MatML_no_comments", 在"MatML_no_comments"后面添加后綴名".pyc"
至此pyc文件修復(fù)完成
3.使用了uncompyle進(jìn)行py還原
在python中安裝uncompyle庫(kù)
pip install uncompyle在powershell中運(yùn)行
uncompyle6 目標(biāo)文件.pyc > 最終文件.py此次使用上述會(huì)報(bào)編碼錯(cuò)誤, 所以打開python文件進(jìn)行輸入
import即可完成
報(bào)錯(cuò)整理
- 編碼方式有問(wèn)題: 參見(jiàn)幻華:反編譯python生成的exe時(shí)出現(xiàn)的問(wèn)題
- 沒(méi)有修復(fù)完成, 重新修復(fù)
4.使用uncompyle還原其他py
這步需要對(duì)于python的包比較了解, 也可以直接在pypi上搜索進(jìn)行判斷是否為作者自己編寫的文件
找到作者自定義的文件名到, 到文件夾"PYZ-00.pyz_extracted"中找到相應(yīng)的pyc文件.
注意: 此處的pyc文件也需要進(jìn)行如上步驟進(jìn)行修復(fù), 重復(fù)步驟2與步驟3, 則能初步將exe文件反編譯出來(lái).
通過(guò)閱讀源代碼可以了解到作者編寫的邏輯或者輔助思考文章邏輯
總結(jié)
以上是生活随笔為你收集整理的exe反编译_反编译Python生成exe软件(Py3-polySML)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何用python写脚本_【按键教程】用
- 下一篇: b站python教程哪个好_推荐B站上的