導航:首頁 > 源碼編譯 > python3反編譯

python3反編譯

發布時間:2023-09-06 18:41:51

Ⅰ 反編譯是什麼意思

計算機軟體反向工程(Reverse engineering)也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(比如可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,

某些特定情況下可能推導出源代碼。反編譯作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。

(1)python3反編譯擴展閱讀

反編譯是一個復雜的過程,反編譯軟體有:

1、SWF相關的反編譯程序

Action Script Viewer

第一個也是最強大的商業SWF反編譯工具,同類產品中,它的AS代碼反編譯效果最好,SWF轉Fla工程重建成功率最高。

2、Android相關的反編譯程序

SMALI/BAKSMAL

SMALI/BAKSMALI是一個強大的apk文件編輯工具,用於Dalvik虛擬機(Google公司自己設計用於Android平台的虛擬機)來反編譯和回編譯classes.dex。其語法是一種寬松式的Jasmin/dedexer語法,而且它實現了.dex格式所有功能(註解,調試信息,線路信息等)。

3、Python相關的反編譯程序

uncompyle2

uncompyle2可以直接轉化為十分完美的python源碼,並可以將反編譯後的源碼再次生成位元組碼文件。

參考資料來源:網路-反向編譯

Ⅱ python源碼編程成pyc後,怎麼防止反編譯

無法防止反編譯,但可以混淆,讓你即使反編譯了,也看不懂語法
下面一段源碼

sd=1

defseed(s):
globalsd
sd=s

defrandn(n):
globalsd
sd=(sd*1103515245+12345)&0x7fffffff
returnsd%n

defmain():
seed(11)
foriinxrange(4):
printrandn(313)

if__name__=='__main__':
main()

混淆後

oo000=1
if9-9:Ii.o0o00Oo0O-iI11I1II1I1I
defoooo(s):
globaloo000
oo000=s
if11-11:ii1I-ooO0OO000o
defii11i(n):
globaloo000
oo000=(oo000*1103515245+12345)&0x7fffffff
returnoo000%n
if66-66:iIiI*iIiiiI1IiI1I1*o0OoOoOO00
defI11i():
oooo(11)
forO0Oinxrange(4):
printii11i(313)
if78-78:i11ii11iIi11i.oOoO0oo0OOOo+IiiI/Iii1ii1II11i
if__name__=='__main__':
I11i()#

Ⅲ 反編譯python編寫的exe文件的詳細方法

接下來具體說一下步驟:

這個文件在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庫

反編譯

Ⅳ python文件後綴是什麼

python文件後綴總結:

(1).py:這通常是您編寫的輸入源代碼。

(2).py3:Python3腳本(Python3腳本通常以.py而不是.py3結尾,很少使用)。

(3).pyc:這是編譯好的位元組碼。如果導入一個模塊,python將生成一個*.pyc包含位元組碼的文件,以便再次導入它更容易(也更快)。

.pyc二進制文件可以反編譯成.py文件,反編譯軟體叫Easy Python Decompiler。

(4).pyo:這是在優化(-O)時創建的*.pyc文件,從Python3.5開始,Python將只使用.pyc而不是.pyo和.pyc。

(5).pyd:這基本上是一個Windows DLL文件。

(6).pyi:MyPy存根,存根文件(PEP 484)。

(7).pyw:用pythonw.exe執行的Windows的Python腳本。

(8).pyx:將Cython src轉換為C/C++。

(9).pyz:Python腳本歸檔(PEP 441)(這是一個包含標准Python腳本頭之後的二進制形式的壓縮Python腳本(ZIP)的腳本)。

(10).pywz:用於MS-Windows的Python腳本歸檔(PEP 441)(這是一個包含標准Python腳本頭之後的二進制形式的壓縮 Python腳本(ZIP)的腳本)。

(11).py [cod]:.gitignore中的通配符表示該文件可能是.pyc,.pyo或.pyd。

(12).rpy:包含應用程序或框架特定功能的RPython腳本或Python腳本。

(13).pyde:處理使用的Python腳本。

(14).pyp:Py4D Python插件。

(15).pyt:Python聲明文件。

眾多python培訓視頻,盡在python學習網,歡迎在線學習!

Ⅳ Python的while 1跟while True到底有什麼區別

定義兩個方法,分別使用while循環

defw():
while1:
pass

defw2():
whileTrue:
pass

單從功能上說,兩種無任何區別,那麼,來看看位元組碼上的區別:

importdis#載入反編譯模塊,Python內置的

dis.dis(w)#對應的是while1,下面是輸出
20SETUP_LOOP3(to6)

3>>3JUMP_ABSOLUTE3
>>6LOAD_CONST0(None)
9RETURN_VALUE

dis.dis(w2)#對應的是whileTrue,下面是輸出
20SETUP_LOOP10(to13)
>>3LOAD_GLOBAL0(True)
6POP_JUMP_IF_FALSE12

39JUMP_ABSOLUTE3
>>12POP_BLOCK
>>13LOAD_CONST0(None)
16RETURN_VALUE

很明顯, while 1的位元組碼只有while True的一半.
為什麼呢? 因為Python2.x中True不是關鍵字,只是一個全局變數而已

Python3中,True、False是關鍵字,就沒有什麼區別了。


更詳細,更專業的分析,請看
http://stackoverflow.com/questions/3815359/while-1-vs-for-whiletrue-why-is-there-a-difference

Ⅵ python寫的程序,轉成了exe文件,怎麼進行反編譯為python源碼

1、電腦桌面,輸入「win+R」組合鍵,在彈出窗口中輸入「cmd」,點擊確定。

閱讀全文

與python3反編譯相關的資料

熱點內容
現在最流行的單片機 瀏覽:88
機頂盒刷機源碼 瀏覽:985
編碼pdf下載 瀏覽:944
隔壁同學app怎麼 瀏覽:299
c語言宏命令 瀏覽:542
php卡死源碼 瀏覽:574
time庫中的clock函數python 瀏覽:989
cad視覺移動命令怎麼打開 瀏覽:821
安卓java調用python 瀏覽:395
java標准時間 瀏覽:137
華為伺服器湖北渠道商雲主機 瀏覽:30
韓式面部護理解壓視頻 瀏覽:301
pdf換成jpg圖片 瀏覽:897
dh加密演算法 瀏覽:107
安卓手機如何隱藏微信信息提示 瀏覽:632
nodejs解壓縮 瀏覽:262
直流雙轉子壓縮機 瀏覽:952
pythonxmlstring 瀏覽:822
用私鑰加密之後可以用公鑰解密 瀏覽:788
ug如何啟動伺服器 瀏覽:444