我正在尝试从 Visual Studio 中通过/Fa 标志生成的列表文件中提取二进制操作码。格式如下:
00040 8b 45 bc mov eax, DWORD PTR _i$2535[ebp]
00043 3b 45 c8 cmp eax, DWORD PTR _code_section_size$[ebp]
00046 73 19 jae SHORT $LN1@unpacker_m
当第一个数字是地址时,我们有操作码,然后是指令助记符,在这种情况下,我想获得一个数组:
8b 45 bc 3b 45 c8 73 19
首先,我分割该行,然后运行以下正则表达式来获取字节:
HEX_BYTE = re.compile("\s*[\da-fA-F]{2}\s*", re.IGNORECASE)
但是这个正则表达式匹配所有内容,有人知道如何以简单的方式做到这一点吗? 谢谢 大卫
最佳答案
忘记正则表达式,从固定字段中提取数据过于复杂。声明
line = ' 00043 3b 45 c8 cmp eax,'
print(line[7:19].split())
产量
['3b', '45', 'c8']
您可能需要
line = line.expandtabs()
首先,如果输入字符串中有 Tab 字符。
关于python正则表达式,从列表输出中提取字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35149262/