将字节序列解码为Unicode字符串
我正在尝试使用Python中的pefile库,将不同类型的文件(比如.exe、.dll和.deb文件)中的字节序列解码成Unicode字符串。不过,有时候我会遇到Unicode解码错误。我该如何有效地处理这些错误呢?
以下是相关的代码片段:
import pefile
def get_section_addresses(file_path):
section_addresses = {}
pe = pefile.PE(file_path)
for section in pe.sections:
section_addresses[section.Name.decode().strip('\x00')] = section.VirtualAddress
return section_addresses
section_addresses = get_section_addresses('D:/Binary/file/rufus.exe')
for name, address in section_addresses.items():
print(f"{name}:{address:08X}")
我正在使用pefile来解析可移植执行文件(PE文件),提取各个部分的名称和它们对应的虚拟地址。但是,在解码部分名称时,我有时会遇到Unicode解码错误。
2 个回答
3
你可以指定编码方式,并尝试忽略错误。
section.Name.decode('utf-8', errors = 'ignore').strip('\x00')
3
我使用嵌套的try-except块来实现错误处理。
try:
pe = pefile.PE(file_path)
for section in pe.sections:
try:
name = section.Name.decode().strip('\x00')
except UnicodeDecodeError:
name = "Undecodable"
section_addresses[name] = section.VirtualAddress
except pefile.PEFormatError:
print(f"Error: {file_path} is not a valid PE file.")
return section_addresses