Python读取PE文件并更改资源部分

时间:2018-11-21 13:06:46

标签: python python-3.x

我正在尝试打开W​​indows 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而解决的相同问题。我不确定为什么这对我不起作用。

1 个答案:

答案 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'))

在二进制文件中,所有内容都已编码,请记住