apiscout
该项目旨在简化Windows API导入恢复。作为输入,可以处理针对已知环境的任意内存转储(请注意:必须首先使用APISCOUT/DB_BUILDER构建参考DB)。
输出是带有一些元信息的已确定的Windows API引用的有序列表,也是Apivector指纹。
- Scout.py-应该对如何与图书馆合作提供良好的概述。
- ida_scout.py-是一个便利的GUI包装器,可用于IDA Pro。
- ghidrascout.java-是Apiscout的Ghidra插件(由 @Mari-Mari贡献)。
- match.py-演示了如何相互匹配和指纹集合。
- collect.py-构建一个可用于匹配的Winapi指纹(示感)数据库。
- export.py-生成可视化倾向器的APIQR图。
- 更新。
该代码应与Python 2和3完全兼容。
有一篇博客文章更详细地描述Apiscout:http://byte-atlas.blogspot.com/2017/04/apiscout.html。
另外,另一篇博客文章解释了如何构造和存储倾向:https://byte-atlas.blogspot.com/2018/04/apivectors.html。
我们还在BotConf 2018上发表了一篇论文,该论文描述了Depth中的Apiscout方法,包括对Malpedia的评估:https://journal.cecyf.fr/ojs/index/index.php/cybin/article/article/article/article/10/20/20/23/23
版本历史记录
- 2023-03-27:v2.0.2-用于IDASCOUT和套装的错误文件,由 @7A6570(THX !!)贡献
- 2023-01-02:v2.0.1-基于lief的导入表与Python 3.10解析的错误文件,由 @malware-kitten(THX !!)贡献
- 2022-08-01:v1.2.0-添加了Ghidra的插件,由 @Mari-Mari(THX !!)贡献
- 2022-09-20:v2.0.0-(潜在的破坏)爬网结果现在有一个附加的输出字段,其中一组给定的Winapi引用。这也包含在
scout.py的JSON输出中,由@Renzhexigua(THX !!)贡献 - 2022-08-01:v1.2.0-添加了Ghidra的插件,由 @Mari-Mari(THX !!)贡献
- 2022-01-17:V1.1.9-修复了
ida_scout.py ,将APISCOUT安装为Python软件包时,请与IDA 7.5+一起工作。 - 2021-10-04:v1.1.8-基于@blattm(THX!)提供的观察值的Winapi上下文的扩展。
- 2021-08-30:v1.1.7- Numpy提出的APIQR中的固定折旧警告。
- 2021-07-31:V1.1.6-不再需要保留固定的Lief版本。 (THX至 @cccs-rs!)
- 2021-01-10:V1.1.5-Python3 Lief软件包固定在版本0.10.1(THX至@akhribfarouk!)!
- 2020-12-09:V1.1.4-Python3修复了数据库Builder(THX至 @dump-guy!)
- 2020-07-13:v1.1.3-将“ install_requires”添加到setup.py中,以确保安装依赖关系。
- 2020-06-30:v1.1.0-现在使用Lief进行进口表解析。修复了使用导入表解析时不会产生倾向的错误。现在也可以通过PYPI获得APISCOUT。
- 2020-03-03:添加了一个脚本来从马拉佩亚(Malpedia)提取最新的Apivector DB(需要Malpedia帐户 / API令牌)。
- 2020-03-02:移植到IDA 7.4(THX至@Jenfrie)。
- 2020-02-18:DB构建器现在兼容为Python 3.7(THX至@Elanfer)。
- 2019-10-08:在IDA 7.3中损坏API视图的解决方法(thx到@enzok指出了这一点)。
- 2019-08-22:修复了一个错误,其中IDA中缺少类型的信息会导致崩溃(现在给出错误消息)。
- 2019-08-20:添加了自我过滤器,以消除指针以拥有可能被错误视为API参考的内存图像。
- 2019-06-06:添加了对IDA Pro(thx to @flxp0c)的注释API的适当类型重建的添加支持
- 2019-05-15:添加了对向量计算的Numpy支持(基于@Garanews-THX提供的实现!)
- 2019-05-15:修复了PE映射器中的一个错误,由于截面大小的误解,缓冲区将缩短缓冲区。
- 2019-01-23:QOL改进:自动数据文件夹在用作模块时部署,Logger初始化(THX至@jdval)
- 2018-08-23:修复了PE映射器中的一个错误,其中PE标头将被(空)部分数据覆盖。
- 2018-08-21:添加功能,允许使用导入表信息,而不是爬上参考。
- 2018-07-31:固定的便利功能,可从/到列表和dicts创建/导出向量,并增加了测试覆盖范围。
- 2018-07-23:警告:倾向格式的变化 - 引入了分类的倾向,这些倾向更加有效(20%+)。
- 2018-06-25:固定与IDA Pro 7.0+的不相容性(THX至@nazywam!)
- 2018-05-23:添加了进一步的语义上下文组(thx to Quoscient.io)
- 2018-03-27:添加了Windows API参考计数的启发式估计
- 2018-03-06:矢量结果的APIQR可视化(C-1024)
- 2017-11-28:添加了自己的进口表解析器以丰富结果信息
- 2017-08-24:IDA Pro中的多段支持(THX至@nazywam!)
- 2017-05-31:添加了Windows 7 SP1 64位进口DB(与Malpedia兼容)
学分
这个想法以前已经经历了多次迭代,直到达到此重构释放。
感谢Thorsten Jenke和Steffen Enders以前的努力,并评估了对此方法的概念验证。
感谢Steffen Enders在APIQR图表的可视化方面所做的工作。
还要感谢Ero Carrera的Pefile和Elias Bachaalany的Ida Python Askusing Form模板。 :)
此外,非常感谢Andrea Garavaglia的性能基准,这些基准在应用匹配中导致了巨大的加速!
欢迎拉请求! :)