在 IDAPython 中检查多个字符串

逆向工程 艾达 蟒蛇 idapro-sdk
2021-06-17 17:04:35

我想看看反汇编中是否可能有两个字符串。我的字符串搜索算法从第一条指令 MinEA() 开始到最后一条 MaxEA() 并使用 idc.FindText(.....,"Bob") 来查看是否找到了例如字符串“Bob”。但是,我正在尝试查看“Bob”或“Alice”是否在反汇编中。我可以使用 idc.FindText 从头到尾循环两次,但这需要太多时间。有没有办法只循环一次反汇编并检查是否使用了任何一个字符串?谢谢你的帮助。

1个回答

您可以使用正则表达式:

idc.FindText(ea, idc.SEARCH_REGEX | idc.SEARCH_DOWN, y, x, "Bob|Alice")
#                ^^^^^^^^^^^^^^^^                              ^

IDA Pro 使用 POSIX ERE 语法,如https://www.hex-rays.com/products/ida/support/idadoc/578.shtml 中所述