使用Python在PE文件中搜索字符串

时间:2018-11-26 14:00:01

标签: python python-3.x

我正在使用Python 3.7覆盖PE文件的资源部分中的某些数据。资源部分字符串表的字符串为1024。当我在十六进制编辑器中打开它时,我会看到所有的A。

00 00 28 08 41 00 41 00 41 00 41 00 41 00 41 00 41 00 41 00 41 00 41 00

我用它来查找文件中的A。

if b'\x00A'*1024 in file:
    s=file.replace(b'\x00A'*1024, message)

但是这最终失败了。如果我将1024更改为1023,它可以工作,但最终在字符串表的开头留下一个“ A”。因此,如果我想用B覆盖所有A,那么最终会变成..

ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB...

我确定这是因为我只搜索1023,它留下了A。但是我只是不确定为什么找不到它。我已经复制了A的十六进制,它包含1024个41个和1024个00个,因此就在那里。

更新: 将if语句更改为:

if b'A' + b'\x00A'*2087 in file:

似乎找到了第一个A。 归功于@Kevin

1 个答案:

答案 0 :(得分:0)

PE文件中的字节序列以A\x00开头,但是您正在搜索\x00A,因此第一个A不匹配。将测试字符串更改为b'A\x00'*1024