Skip to main content

用于 Windows API 使用恢复和相似性评估的库,重点是内存转储。

项目描述

ApiScout

该项目旨在简化 Windows API 导入恢复。作为输入,可以处理已知环境的任意内存转储(请注意:必须首先使用 apiscout/db_builder 构建参考数据库)。
输出是已识别的 Windows API 引用的有序列表,其中包含一些元信息和 ApiVector 指纹。

  • scout.py——应该给出一个关于如何使用这个库的很好的大纲。
  • ida_scout.py -- 是用于 IDA Pro 的便捷 GUI 包装器。
  • GhidraScout.java -- 是 ApiScout 的 Ghidra 插件(由 @mari-mari 提供)。
  • match.py​​ - 演示 ApiVectors 如何相互匹配以及指纹集合。
  • collect.py -- 构建可用于匹配的 WinAPI 指纹 (ApiVectors) 数据库。
  • export.py——生成可视化 ApiVectors 的 ApiQR 图。
  • update.py -- 从 Malpedia 中提取最新的 ApiVector DB(需要 Malpedia 帐户/API 令牌)。

代码应该与 Python 2 和 3 完全兼容。
有一篇博客文章更详细地描述了 ApiScout:http: //byte-atlas.blogspot.com/2017/04/apiscout.html
此外,另一篇博客文章解释了 ApiVectors 的构造和存储方式:https ://byte-atlas.blogspot.com/2018/04/apivectors.html 。
我们还在 Botconf 2018 上发表了一篇论文,深入描述了 ApiScout 方法,包括对 Malpedia 的评估:https ://journal.cecyf.fr/ojs/index.php/cybin/article/view/20/23

版本历史

  • 2022-09-20:v2.0.0 -(可能是 BREAKING)爬网结果现在有一个额外的输出字段,其中包含一组给定 WinAPI 的调用引用。这也包含在 的 JSON 输出中scout.py,由@renzhixigua 提供(THX !!)
  • 2022-08-01:v1.2.0 - 添加了 Ghidra 插件,由 @mari-mari 提供(谢谢!!)
  • 2022-01-17:v1.1.9 -ida_scout.py当 apiscout 也作为 Python 包安装时,已修复以与 IDA 7.5+ 一起使用。
  • 2021-10-04:v1.1.8 - 根据@blattm 提供的观察结果扩展 winapi 上下文(THX!)。
  • 2021-08-30:v1.1.7 - 修复了 numpy 提出的 ApiQR 中的弃用警告。
  • 2021-07-31:v1.1.6 - 不再需要保持固定的 LIEF 版本。(感谢@cccs-rs!)
  • 2021-01-10:v1.1.5 - Python3 LIEF 包固定到版本 0.10.1(感谢 @akhribfarouk!)
  • 2020-12-09:v1.1.4 - DatabaseBuilder 上的 Python3 修复(感谢 @Dump-GUY!)
  • 2020-07-13:v1.1.3 - 在 setup.py 中添加了“install_requires”以确保安装依赖项。
  • 2020-06-30:v1.1.0 - 现在使用 LIEF 进行导入表解析。修复了使用导入表解析时不会生成 ApiVectors 的错误。ApiScout 现在也可以通过 PyPI 获得。
  • 2020-03-03:添加了一个脚本以从 Malpedia 中提取最新的 ApiVector DB(需要 Malpedia 帐户/API 令牌)。
  • 2020-03-02:移植到 IDA 7.4(THX 到 @jenfrie)。
  • 2020-02-18:DB Builder 现在兼容 Python 3.7(感谢 @elanfer)。
  • 2019-10-08:IDA 7.3 中 API 视图过滤失效的解决方法(感谢 @enzok 指出这一点)。
  • 2019-08-22:修复了 IDA 中缺少类型信息会导致崩溃的错误(现在改为给出错误消息)。
  • 2019-08-20:添加了自过滤器以消除指向自己的内存映像的指针,这些指针可能被错误地视为 API 引用。
  • 2019-06-06:增加了对 IDA Pro 中带注释的 API 的正确类型重建的支持(THX to @FlxP0c)
  • 2019-05-15:添加了对向量计算的 numpy 支持(基于 @garanews 提供的实现 - THX!)
  • 2019-05-15:修复了 PE 映射器中的一个错误,即由于对部分大小的误解,缓冲区会缩短。
  • 2019-01-23:QoL 改进:用作模块时的自动数据文件夹部署、记录器初始化(THX to @jdval)
  • 2018-08-23:修复了 PE 映射器中的一个错误,即 PE 标头将被(空)节数据覆盖。
  • 2018-08-21:添加了允许使用导入表信息而不是爬取参考的功能。
  • 2018-07-31:修复了从列表和字典创建/导出向量的便利功能,增加了测试覆盖率。
  • 2018-07-23:警告:Apivector 格式的变化——引入了空间效率更高的排序 ApiVectors (20%+)。
  • 2018-06-25:修复了与 IDA Pro 7.0+ 的不兼容问题(感谢 @nazywam!)
  • 2018-05-23:添加了更多语义上下文组(THX 到 Quoscient.io)
  • 2018-03-27:添加了 Windows API 引用计数的启发式估计
  • 2018-03-06:矢量结果的 ApiQR 可视化 (C-1024)
  • 2017-11-28:添加了自己的导入表解析器以丰富结果信息
  • 2017-08-24:IDA Pro 中的多段支持(感谢 @nazywam!)
  • 2017-05-31:添加了 Windows 7 SP1 64 位导入数据库(兼容 Malpedia)

学分

这个想法之前已经经历了多次迭代,直到达到这个重构版本。
感谢 Thorsten Jenke 和 Steffen Enders 之前所做的努力并评估了这种方法的概念验证。
更加感谢 Steffen Enders 在 ApiQR 图的可视化方面所做的工作。
还要感谢 Ero Carrera 的 pefile 和 Elias Bachaalany 的 IDA Python AskUsingForm 模板。:)
此外,非常感谢 Andrea Garavaglia 的性能基准测试,这导致应用匹配的显着加速!

欢迎请求请求!:)

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

apiscout-2.0.0.tar.gz (68.6 kB 查看哈希

已上传 source