IDA 专业版 6.95。从菜单中,我可以使用 Edit... Export data... C unsigned char array (hex)。
我想在 Python 脚本中执行此操作,而无需重写已经有效的内容。
我一直在寻找一种方法来查找我通过 GUI 菜单执行的命令列表,但导出数据不是 IDC 文件中出现的那种东西。
IDA 专业版 6.95。从菜单中,我可以使用 Edit... Export data... C unsigned char array (hex)。
我想在 Python 脚本中执行此操作,而无需重写已经有效的内容。
我一直在寻找一种方法来查找我通过 GUI 菜单执行的命令列表,但导出数据不是 IDC 文件中出现的那种东西。
因为这是一个相对基本的功能,所以没有从 IDAPython 调用该命令的内置方法。您可以使用一些 Qt 技巧来伪造用户单击的 GUI 菜单,但这似乎太费力了。
对我来说,似乎最简单和最干净的解决方案是简单地调用idaapi.get_many_bytes以获取您在转储中感兴趣的数据缓冲区,然后根据需要对其进行格式化。
例如,以下代码片段将二进制数据输出为十六进制字符串:
buf = idaapi.get_many_bytes(start, end)
buf.encode('hex')
或者获得一个类似 c 的数组:
buf = idaapi.get_many_bytes(start, end)
buf = buf.encode('hex')
two_hex_char_seq = map(operator.add, buf[::2], buf[1::2])
c_array = "{0x" + ", 0x".join(two_hex_char_seq) + "}"
这将给出类似于以下内容的输出:
{0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30}