findcrypt3插件在yara-python 4.3.0版本运行时会报下面的错误
显示 yara.StringMatch 不可下标,查看 yara-python 4.3.0发现这个版本对 yara.StringMatch 做了修改,现在 yara.StringMatch不是列表了
而是具有如下属性
修改的方法也很简单,一是回滚 yara-python 的版本到4.2.3,如果不想回滚的话就要把findcrypt3.py源码里对 yara.StringMatch列表的操作修改成对应属性
主要就是修改里面的 yarasearch 函数,修改成下面这样就行
def yarasearch(self, memory, offsets, rules):
print(">>> start yara search")
values = list()
matches = rules.match(data=memory)
for match in matches:
for stringR in match.strings:
name = match.rule
for string in stringR.instances:
if name.endswith("_API"):
try:
name = name + "_" + idc.GetString(self.toVirtualAddress(string.offset, offsets))
except:
pass
value = [
self.toVirtualAddress(string.offset, offsets),
match.namespace,
name + "_" + hex(self.toVirtualAddress(string.offset, offsets)).lstrip("0x").rstrip("L").upper(),
stringR.identifier,
repr(string.matched_data)
]
idaapi.set_name(value[0], name
+ "_"
+ hex(self.toVirtualAddress(string.offset, offsets)).lstrip("0x").rstrip("L").upper()
, 0)
values.append(value)
print("<<< end yara search")
return values
实测成功运行