项目介绍:bncov — 动态二进制分析的利器
去发现同类优质开源项目:https://gitcode.com/
bncov 是一个可脚本化的Binary Ninja插件,专为覆盖率分析和可视化设计。它不仅仅是简单的图形化展示,而是提供了用于程序化推理关于覆盖率的抽象接口。无论是在GUI交互式环境中还是作为大型分析任务的一部分,甚至在独立脚本中,bncov都能发挥出色的作用。
这个插件是回馈给社区的一个开源项目,并不是Mayhem产品的一部分。如果你对结合符号执行和模糊测试的Mayhem系统感兴趣,可以访问forallsecure.com了解更多详情。
项目技术分析
bncov支持DynamoRIO的drcov格式版本3,通过提供一个名为ctx
的对象,可以基于Binary View进行多文件场景下的使用。其API设计简洁且灵活,包括:
- 通过
bncov.get_ctx
和bncov.get_covdb
获取与视图关联的上下文对象。 - 将旧的辅助函数
bncov.get_bv
/bncov.get_covdb
更改为bncov.make_bv
/bncov.make_covdb
,以从目标文件和覆盖率目录创建Binary View和覆盖率数据库。 - 函数相关的covdb成员函数默认基于函数起始地址,这提高了独特性和可用性。
- 支持Python 3,放弃了Python 2的支持。
此外,还有download_dynamorio.py
工具帮助懒人快速安装DynamoRIO。
应用场景
- 覆盖率可视化:利用导入的覆盖率信息,可以直接在Binary Ninja界面中以热力图形式高亮显示已覆盖的块。
- 实时更新:监视覆盖目录,当有新的覆盖率文件出现时,会自动更新并高亮显示。
- 差异分析:直观地查看哪些块仅被少数或大量跟踪覆盖。
- 前沿发现:突出显示那些有未被覆盖的向外边界的块。
- 功能报告:为特定函数生成覆盖报告,发现未被触及的功能部分。
项目特点
- 灵活性:bncov不仅可用于GUI操作,还支持直接编程进行复杂的覆盖率分析。
- 直观可视化:颜色编码的代码块使覆盖率一目了然,有助于快速识别稀有功能和前沿块。
- 脚本友好:内建的CoverageDB类提供了丰富的函数,方便用户编写自定义脚本来扩展分析。
- 自动化集成:可以监控目录,自动处理新产生的覆盖率文件,提高了工作效率。
- 兼容性:支持DynamoRIO的drcov格式,附带示例脚本生成覆盖率文件。
要开始使用bncov,只需将插件复制到Binary Ninja的插件目录,然后按照教程一步步操作即可。
总的来说,bncov是一个强大且实用的工具,对于任何涉及二进制分析、漏洞发现或软件测试的开发者来说,都是不可或缺的资源。无论是初学者还是高级用户,都能从中获益良多。立即试用bncov,开启你的动态二进制分析之旅!
去发现同类优质开源项目:https://gitcode.com/