IDA findcrypt3插件在yara-python 4.3.0以上版本的问题

发布于 2023-12-19  155 次阅读


在我给我的IDA加一个findcrypt3插件想查看文件里面有哪些加密的时候,发现我下载的脚本在IDA插件里面确实出现了,但是运行的时候总是提醒我那个脚本.py文件什么什么行有什么问题,大概就像下面这一幅图一样:

然后我就在博客里面疯狂搜索,可算是找到一篇文章说明这种情况的原因:大概是因为yara-python 4.3.0这一个版本对

yara.StringMatch 做了修改,现在 yara.StringMatch不是列表了。

解决办法也很简单,就是找到我们的python脚本的 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

这样一来就解决了这个问题

参考来自于:IDA findcrypt3插件在yara-python 4.3.0以上版本的问题_findcrypt插件-CSDN博客


The world's full of lonely people afraid to make the first move.