如果有exe或者elf格式得文件,那就直接反編譯。
如果沒有找到,就找下拉去的文件夾中dist文件夾下熟悉的文件名,有可能是文件格式的,沒有後綴 。
首先需要准備pyinstxtractor.py ,下載地址:https://github.com/extremecoders-re/pyinstxtractor
然後把下載的文件復制到需要反編譯的文件夾中,在命令行輸入python pyinstxtractor.py (要編譯的文件名)
這時候會得到一個後綴為_extracted的文件夾,這裡面就是需要的文件。
打開之後發現裡面都是pyc文件格式的,這時候我們就需要把pyc格式的文件轉換為py格式的文件。
如果你報錯了,那麼就繼續。
這種錯誤就是需要修改文件頭,因為在壓縮和解壓的時候會存在文件頭的丟失。
這時候我們選擇打開struct.pyc(其他的也可以,主要是用來比較,從而找到正確的文件頭)
完成後使用命令uncompyle6 當前文件名.pyc > 保存的文件名.py
這時候文件夾中就會有文件了,這時候就可以看到代碼的原始樣貌了。
但是這只是一個文件,如果是大項目的話,可能會有很多依賴包,就包括你寫的函數。
相關依賴包都在PYZ-00.pyz文件裡面。
這時候我們需要使用到 pyi-archive_viewer.py
這個文件在(python環境)\Scripts
裡,是需要安裝pyinstaller的,沒有安裝的需要安裝一下(已經安裝的跳過安裝)pip install pyinstaller
安裝完成後在將(python環境)\Scripts
添加到環境變量path裡面,這樣就可以直接在命令行使用了。
使用命令 pyi-archive_viewer.py PYZ-00.pyz
然後就會進入到
然後找到自己想要編譯的文件名,在?後輸入x 文件名 ,然後回在下一步輸入保存的文件名,後綴這裡就先寫上.pyc,回車之後返回文件夾就會看到相應的文件。
我們需要安裝uncompyle6,是一個python庫,pip conda都可以。
安裝完成後,這在當前目錄下使用cmd命令行 輸入 uncompyle6 當前文件名.pyc > 轉換完成保存的文件名.py
PS:在反編譯中發現一個嚴重的問題,如果在PYZ-00.pyz的需要編譯的依賴包非常多,那只能一個個的取出來,非常的SB,開頭的文件提取,以及後面的修改文件頭、轉換格式都是可以編程快速進行的,但是在修改文件頭的時候還是出了點問題,後續如果完成了自動化的過程,會再添加到文章中。