Python - 为

时间:2017-03-27 15:09:55

标签: python

我目前正在调查绕过反病毒产品基本签名检测的方法。现在,我试图通过填充0x00来分解文件(也许NOP更好?)但我无法弄清楚如何做到这一点。我正在编写一个非常简单的Python脚本来自动化二进制文件的混淆以绕过基本检测(以证明我的论文中的一点),这是最后的片段。

到目前为止,我只将可执行文件读入一个bytearray,我现在试图弄清楚如何读取每个十六进制值,将其写入一个新数组,写入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.

有没有一种简单的方法可以解决这个问题?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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')

希望它有所帮助!