py2exe反編譯
接下來具體說一下步驟:
這個文件在pyinstaller庫里,還沒有安裝的需要安裝一下(已經安裝的跳過安裝)
安裝完成後在python安裝路徑下的\Lib\site-packages文件夾搜索archive_viewer.py文件
找到文件後可以復制到你想要放置的位置(不復制也行)
這一步會把編譯出的文件都羅列出來,像這樣
但是我們只需要找到我們exe對應的名字的文件就好了,確認存在之後滑到最下面,會發現有個?號用於輸入接下來的命令,在這邊我們輸入
會顯示 to filename? 讓你輸入需要輸出的pyc文件名稱,這邊輸入 your_app.pyc 回車就好了
接下來又會顯示?號,接著輸入 x struct 回車,輸入struct文件名稱 struct 回車
由於用PyInstaller打包後,pyc文件的前8個位元組會被抹掉,所以最後要自己添加回去。前四個位元組為python編譯的版本,後四個位元組為時間戳。
這邊使用Hex Editor Neo軟體同時打開.pyc文件和struct文件,復制struct文件前面8個位元組插入到.pyc文件的前面:
這樣我們就得到了完整的pyc文件
安裝uncompyle庫
反編譯
2. python exe如何防止反編譯
Python 編譯生成 pyc 僅僅為了提升載入速度,並不是為了防止破解,反編譯後和原來一模一樣。pyinstaller,py2exe,只是把 pyc 打個包,同樣很弱。代碼混淆也只能增加看懂代碼的難度,但並不能防止破解。所以最為穩妥的辦法只有修改Python解釋器,對源代碼進行加密,解釋器載入源代碼時再解密,這種方法雖然可以防止破解,但給自己帶來麻煩不說,發布程序是需要打包自己修改後的解釋器,相當麻煩。
3. 如何用uncompyle2反編譯
1. 安裝和配置uncompyle2
從github上獲取uncompyle2然後進行配置。
python setup.py install
之後從下載後解壓的文件夾uncompyle2-master/scripts找到可以直接使用的腳本uncompyle2,實際上這就是一個python腳本文件。
2. 反編譯abstract.pyo
和前面帖子中方法一致,從WingIDE的安裝目錄的bin/2.7/中的src.zip中提取process\abstract.pyo進行反編譯
./uncompyle2 ~/Desktop/abstract.pyo > ~/Desktop/abstract.py
然後打開即可看到py代碼了
3. 修改abstract.py並重新生成pyo
在反編譯的abstract.py中直接搜授權驗證函數_GetTermDaysLeft
順便掃掃代碼,即使沒注釋也很容易看懂。
所以,果斷在函數開始處,添加return -1,並保存。
生成pyo
python -O -m py_compile abstract.py
註:如果不帶選項-O則生成的是pyc文件,-O選項則可以在生成代碼時進行一定的優化。
4. 大功告成
將生成的新abstract.pyo替換原來src.zip中的\process\abstract.pyo即可。需要注意的是:不能解壓,替換,再打包!需要直接替換zip中相應文件!
最後替換安裝目錄中bin\2.7\下的src.zip即可。
4. 用Python2.7.1寫的小程序可以反編譯得到它的源代碼嗎
可以,網上有很多在線的反編譯工具,給你發幾個鏈接:
1、http://depython.com/index.php
2、https://github.com/eble/pyc2py
3、http://tool.lu/pyc/
不過好像第一個只適用於Python2.0-2.6,第二個適用於Python2.6,第三個應該可以反編譯2.7,你可以都試一下。
5. python反編譯遇到的新問題,求解
這個後綴應該算是除了python的py代碼外,遇到最多的一種文件類型了。雖然python被普遍認為是一種解釋性語言,但誰說它就不能被編譯後執行呢?python通過compile生成的pyc文件,然後由python的虛擬機執行。相對於py文件來說,編譯成pyc本質上和py沒有太大區別,只是對於這個模塊的載入速度提高了,並沒有提高代碼的執行速度,通常情況下不用主動去編譯pyc文件。
6. 如何把python編譯成exe文件
我的是這個文件 py2exe-0.6.9.win32-py2.6.exe 你自己找,找到對應你python的版本安裝。安裝之後打開解釋器輸入>>> import py2exe
>>> import distutils如果沒有問題就可以了。現在說步驟:1、准備你要編譯的python腳本,比如:a.py,放在C:\compile\a.py2、編寫另一個python腳本setup.py,內容如下:import distutils
import py2exe
distutils.core.setup(windows=[『C:\\compile\\a.py』])3、把你的setup.py放在某個位置,比如C:\compile\setup.py打開命令行輸入 C:\compile\setup.py py2exe 編譯生成4、然後會在C:\Users\你的用戶名\ 下生成一個dist的文件, 裡面有個a.exe,雙擊就會執行你的腳本。
7. python寫的程序,轉成了exe文件,怎麼進行反編譯為python源碼
1、電腦桌面,輸入「win+R」組合鍵,在彈出窗口中輸入「cmd」,點擊確定。
8. PyInstaller打包、解包與反編譯.pyc文件
PyInstaller官網: https://www.pyinstaller.org/
假設有一個demo.py文件,在同目錄下啟動命令行或從命令行進入當前文件夾,使用如下命令打包
打包後同目錄下會產生兩個文件夾build和dist(distribution),dist文件夾內就是目標程序。
解包使用pyinstxtractor工具
Github地址: https://github.com/extremecoders-re/pyinstxtractor
假設在第1步中,使用-F參數將demo.py打包為獨立可執行文件demo.exe,進入dist文件夾,將pyinstxtractor.py放在該目錄下,在該目錄下啟動命令行或從命令行進入該文件夾,使用如下命令解包
解包得到的內容將放入同目錄下的demo.exe_extracted文件夾
找到目標.pyc文件,比如demo.pyc
反編譯.pyc文件使用uncompyle6工具
Github地址: https://github.com/rocky/python-uncompyle6
可以直接通過pip安裝uncompyle6
由於pyinstaller在打包可執行文件時會將.pyc文件頭部的16位元組magic head去掉,因此需要對需要反編譯的.pyc文件進行預處理,將文件頭部的16位元組magic head補充完整。這里使用一個開源的16進制編輯器ImHex。
Github地址: https://github.com/WerWolv/ImHex
進入demo.exe_extracted文件夾,用16進制編輯器打開struct.pyc文件復制頭部的16位元組magic head,再用16進制編輯器打開demo.pyc文件,將頭部的16位元組改為magic head,即將圖2中的部分更改為圖1中的值即可。
使用前一個命令,反編譯後的源碼內容會顯示在命令行窗口內;使用後一個命令,源碼會列印到指定文件中,如demo.py。
到此為止可以
Invalid pyc/pyo file - Magic value mismatch!
補充magic head後即可正常反編譯。
如果不是項目成員給所謂的程序而不肯給源碼,而我又繞不過這個程序的問題,我才不想折騰這些有的沒的。
9. EXE文件反編譯成源碼
EXE文件可以通過步驟來反編譯成源碼,具體步驟如下:
1、在網路上搜索下載反編譯工具ILSpy,ILspy是一個開源的.net反編譯軟體,使用十分方便。解壓後如圖,雙擊.exe文件打開解壓工具。
(9)py2exe反編譯擴展閱讀:
反編譯也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(比如可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,某些特定情況下可能推導出源代碼。
exe是編譯好的程序文件 要看結構就得反編譯 但是通常不能把可執行文件變成高級語言源代碼,只能轉換成匯編程序。 所以要要看結構不止要會反編譯 還得精通匯編語言。