bloombit-dev/beluga
GitHub: bloombit-dev/beluga
beluga 为 Binary Ninja 提供 Haskell 绑定和基于 MLIL SSA 中间语言的程序分析能力,灵感源自 Frama-C Eva 插件,旨在实现二进制级别的自动化 bug 发现。
Stars: 3 | Forks: 0
# beluga
用于 binary ninja 的 Haskell 程序分析与绑定,支持 medium level SSA 中间语言。
## 构建说明
将 binary ninja 核心共享对象符号链接到包根目录。
例如在 MacOS 上:
- ```ln -s /Applications/Binary\ Ninja.app/Contents/MacOS/libbinaryninjacore.dylib libbinaryninjacore.dylib```
- ```ln -s /Applications/Binary\ Ninja.app/Contents/MacOS/libbinaryninjacore.1.dylib libbinaryninjacore.1.dylib```
或者向 stack 传递 libbinaryninjacore 所在的目录。
然后使用 stack 构建并执行 demo(在将路径更改为你感兴趣的许可证和 binary/bndb 之后)。
- stack init
- stack build --extra-lib-dirs "$(pwd)"
- stack run example --extra-lib-dirs "$(pwd)" -- +RTS -N14 -sstats -RTS
## 文档
Haddock 生成的文档托管在[这里](https://bloombit.dev/documentation/beluga/index.html)。
## 分支
已针对 ultimate 许可证安装进行测试和实现。
main 分支跟踪当前的开发中版本。
# 最低版本
此仓库需要 binary ninja 版本 dev/5.4.9588 Ultimate。其他 ultimate 版本可能可行,但假定未经测试。
要升级 binja 版本,建议在已知可用的版本和新版本之间比较 ```unit_test.sh``` 的结果。
## 代码格式
所有 haskell 文件均使用 https://github.com/tweag/ormolu 进行格式化
## 相关工作与参考
Beluga 的主要灵感来源于 [Frama-C](https://frama-c.com) 的 Eva [插件](https://frama-c.com/fc-plugins/eva.html)。
我曾用 Eva 在 C 代码库中发现了许多 bug,我希望在 binary ninja 的 MLIL SSA 中间语言上获得相同的体验。
Frama-c 书籍:[Guide to Software Verification with Frama-C](https://link.springer.com/book/10.1007/978-3-031-55608-1)
[Margin Research](https://margin.re) 的 Sophia d'Antoine 讲授了一门课程,[Program Analysis for Vulnerability Research](https://margin.re/training/),涵盖了在 Binary Ninja 中实现抽象解释。
标签:Binary Ninja, Haskell, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 可配置连接, 程序分析, 逆向工程, 静态分析