我正在尝试打开Windows PE文件并更改资源部分中的一些字符串。
f = open('c:\test\file.exe', 'rb')
file = f.read()
if b'A'*10 in file:
s = file.replace(b'A'*10, newstring)
在资源部分,我有一个字符串只是
AAAAAAAAAA
我想用其他东西代替它。读取文件后,我得到:
\x00A\x00A\x00A\x00A\x00A\x00A\x00A\x00A\x00A\x00A
我尝试使用UTF-16打开并解码为UTF-16,但随后遇到错误:
UnicodeDecodeError: 'utf-16-le' codec can't decode bytes in position 1604-1605: illegal encoding
我看到的每个人都有通过解码为UTF-16而解决的相同问题。我不确定为什么这对我不起作用。
答案 0 :(得分:0)
如果二进制文件中的资源编码为utf-16,则不应更改编码。
尝试
f = open('c:\\test\\file.exe', 'rb')
file = f.read()
unicode_str = u'AAAAAAAAAA'
encoded_str = unicode_str.encode('UTF-16')
if encoded_str in file:
s = file.replace(encoded_str, new_utf_string.encode('UTF-16'))
在二进制文件中,所有内容都已编码,请记住