繁体   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