日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如何解包 Python 惡意可執(zhí)行文件

使用 Python 編寫的程序通常以源碼的形式發(fā)布,也可以將所有依賴都打包到一個(gè)可執(zhí)行文件中。那么如何解包 Python 惡意可執(zhí)行文件呢?

目前成都創(chuàng)新互聯(lián)已為上千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、同安網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

打包

打包與加殼不同,打包 Python 程序的目的是創(chuàng)建一個(gè)可以在操作系統(tǒng)上獨(dú)立運(yùn)行的可執(zhí)行文件。使用例如 PyInstaller 這類打包工具時(shí),會(huì)執(zhí)行以下操作:

  • 將所有.py 源文件編譯為 python 字節(jié)碼文件(.pyc文件)
  • 整合所有 python 編譯的源代碼和 python 依賴,包括依賴于操作系統(tǒng)的 python 解釋器(Linux 上的 libpython3.9.so.1.0 或 Windows 上的 python37.dll)
  • 將所有資源都打包在一起,執(zhí)行時(shí)將這些資源都解壓到內(nèi)存中,然后使用解釋器解釋執(zhí)行原始 python 代碼

以 Windows 平臺(tái)為例,將示例代碼使用 PyInstaller 進(jìn)行打包:

示例代碼

直接運(yùn)行腳本文件是很容易的:

運(yùn)行情況

打包如下所示:

打包情況

打包得到的 evil_program.exe可以直接運(yùn)行,可得到與腳本相同的運(yùn)行結(jié)果。此時(shí),程序可以移動(dòng)到另一個(gè)完全沒有 Python 環(huán)境的機(jī)器上一樣可以執(zhí)行。

運(yùn)行情況

在 Windows 上解包 Python<3.9

如果樣本中可以看到很多以 py 開頭的字符串,基本可以斷定是一個(gè)打包的 Python 程序。

字符串

對(duì)于 PyInstaller 來(lái)說,還有獨(dú)特字符串 MEIPASS。

監(jiān)控運(yùn)行程序時(shí)在臨時(shí)文件夾中創(chuàng)建了哪些文件,就能夠知道使用的 Python 版本。例如 python38.dll 意味著使用的是 Python 3.8 版本。

監(jiān)控文件系統(tǒng)

想要恢復(fù)源代碼,必須要保證:

  • 解壓得到所有文件,特別是編譯后的字節(jié)碼文件(.pyc)
  • 反編譯感興趣的 .pyc 文件

解壓可以使用 pyinstxtractor,使用相同版本的 Python 即可解壓得到文件:

解壓文件

pyinstxtractor 還額外提供了哪些是 Python 程序文件的信息,盡管存在誤報(bào)但是也有很大的幫助??梢钥吹街魑募?evil_program.pyc:

提取文件

接著使用 uncompyle6進(jìn)行反編譯,值得注意的是 uncompyle6 只支持到 Python 3.8。

反編譯

在 Linux 上解包 Python>=3.9

再次使用 pyinstxtractor 解壓樣本文件。由于樣本是 64 位 ELF 文件,不能直接使用 pyinstxtractor 需要將文件的 pydata 轉(zhuǎn)存到一個(gè)單獨(dú)的文件再執(zhí)行 pyinstxtractor。

轉(zhuǎn)存文件

解包成功如下所示,也需要配合相應(yīng)的 Python 版本:

解壓文件

解壓后的數(shù)據(jù)中有一個(gè) RansomWare.pyc,就是需要關(guān)注的內(nèi)容。由于使用 Python 3.9,需要 Decompyle++進(jìn)行反編譯。該工具美中不足的就是沒有文檔講解如何進(jìn)行構(gòu)建,如下所示:

構(gòu)建反編譯工具

如果想要從任何地方調(diào)用 pycdc 命令,也可以運(yùn)行 sudo make install。

pycdc 是反編譯命令,使用它來(lái)恢復(fù) RansomWare.pyc 的源代碼:

反編譯

當(dāng)然,某些情況下也會(huì)遇到反編譯失敗的問題。但大部分代碼還是可以正常進(jìn)行反編譯的:

反編譯失敗

反編譯失敗時(shí),可以使用 pycdas 命令來(lái)恢復(fù)“反匯編”的字節(jié)碼。

write_key() 函數(shù)的字節(jié)碼反匯編

結(jié)論

本文介紹了如何解壓和反編譯使用 PyInstaller 打包的 Python 程序,在應(yīng)對(duì)使用 Python 編寫的惡意軟件時(shí)可以在源碼級(jí)進(jìn)行分析,可以大大提高效率。


網(wǎng)頁(yè)標(biāo)題:如何解包 Python 惡意可執(zhí)行文件
文章鏈接:http://www.dlmjj.cn/article/dpiijsg.html