日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pyc文件反编译

發布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pyc文件反编译 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

pyc文件結構

文件格式:

03f3 0d0a magic表示python的版本信息,此處03f30d0a是python2.7的標識;

6206 b160 時間戳,編譯的時間信息

63 Blockde的開頭

后4字節0000 0000 :argcount參數個數

后4字節0000 0000: nlocals局部變量個數

后4字節1b00 0000: stacksize棧空間大小

后4字節4000 0000:flags

73:類型string

3501 0000 字節長度(小端模式)

之后即為opcode

參考:PYC文件格式分析

?其中目前我們比較關注的是字節長度,因為如果修改了其源代碼,則長度必隨之改變,因此這個數值也要隨之修改,并且注意他是小端序存儲。

源碼混肴:

可以反編譯出來,但是反編譯出來很難使人們看懂。比較著名的有AST語法樹。

pyc混肴

對于可執行的pyc,我們可以使用pycdump工具進行轉儲,查看其字節碼形式。

將相應pyc文件保存在pycdump文件夾下,運行 python dump.py test.py

?這是一種直接跳轉混肴:

前三個jump運行邏輯上沒有問題,但是會導致反編譯失敗 其字節碼為 0x71 0x**

我們可以插入許多這樣類似的指令,任意的不合法指令(其實隨機數據都可以),然后用一些 JUMP 指令去跳過這樣的不合法指令,造成混肴的目的,并且不影響程序正常運行。

處理辦法:我們將這三條指令刪除,并且將code_string的長度減少6個字節。也就是上面的

3501 0000 字節長度(小端模式),然后保存。最后再使用uncompyle6反編譯,進行分析。

重疊指令:

# 例1 Python單重疊指令 0 JUMP_ABSOLUTE [71 05 00] 5 3 PRINT_ITEM [47 -- --] 4 LOAD_CONST [64 64 01] 356 7 STOP_CODE [00 -- --]# 例1 實際執行 0 JUMP_ABSOLUTE [71 05 00] 5 5 LOAD_CONST [64 01 00] 1

?這里跳轉到了第三行,但是沒有執行第三行的所有代碼,而是把他的操作數看成代碼執行。

uncompyle6 -o total.py .\test.pyc

參考:?

更多的字節碼混淆技術?

簡單入門python字節碼混淆

總結

以上是生活随笔為你收集整理的pyc文件反编译的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。