我正在使用python3.7覆盖PE文件的资源部分中的一些数据。资源节字符串表有一个1024 a的字符串。当我在十六进制编辑器中打开它时,我看到所有的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的十六进制,它包含102441和102400,所以都在那里。你知道吗
更新: 将if语句更改为:
if b'A' + b'\x00A'*2087 in file:
它似乎找到了第一个A。 归功于@Kevin
PE文件中的字节序列以
A\x00
开始,但您正在搜索\x00A
,因此第一个A不匹配。将测试字符串更改为b'A\x00'*1024
。你知道吗相关问题 更多 >
编程相关推荐