簡體   English   中英

Python-對於每個讀入的十六進制字節,使用0x00重寫字節數組

[英]Python - rewrite byte array with 0x00 for each hex byte read in

我目前正在研究繞過防病毒產品基本簽名檢測的方法。 現在,我正在嘗試通過填充0x00來分解文件(也許NOP更好嗎?),但是我不知道該怎么做。 我正在編寫一個非常簡單的Python腳本來自動執行對二進制文件的混淆,以繞過基本檢測(以證明我的論文中的觀點),這是最后的代碼片段。

到目前為止,我只將可執行文件讀取到一個字節數組中,現在我試圖弄清楚如何讀取每個十六進制值,將其寫入新數組,寫入0x00,從第一個數組中獲取下一個十六進制值,然后繼續。

Example
a = 54 68 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F 74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 6D 6F 64 65 (DOS stub)

我希望在每個十六進制值之間填充/插入00以具有以下內容

b = 54 00 68 00 69 00 73 00 20 00 70 etc.

有一個簡單的方法可以解決這個問題嗎?

b''.join(bytes(x) for x in zip(a, itertools.repeat(0)))

' 00 '加入十六進制值列表!

# when type of a is of <type 'bytearray'> 
>>> b = ' 00 '.join(str(a).split())
>>> print b
54 00 68 00 69 00 73 00 20 00 70 00 72 00 6F 00 67 00 72 00 61 00 6D 00 20 00 63 00 61 00 6E 00 6E 00 6F 00 74 00 20 00 62 00 65 00 20 00 72 00 75 00 6E 00 20 00 69 00 6E 00 20 00 44 00 4F 00 53 00 20 00 6D 00 6F 00 64 00 65
>>> b = bytearray(b) 
>>> print b
bytearray(b'54 00 68 00 69 00 73 00 20 00 70 00 72 00 6F 00 67 00 72 00 61 00 6D 00 20 00 63 00 61 00 6E 00 6E 00 6F 00 74 00 20 00 62 00 65 00 20 00 72 00 75 00 6E 00 20 00 69 00 6E 00 20 00 44 00 4F 00 53 00 20 00 6D 00 6F 00 64 00 65')

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM