bloombit-dev/beluga

GitHub: bloombit-dev/beluga

beluga 为 Binary Ninja 提供 Haskell 绑定和基于 MLIL SSA 中间语言的程序分析能力,灵感源自 Frama-C Eva 插件,旨在实现二进制级别的自动化 bug 发现。

Stars: 3 | Forks: 0

# belugaScreenshot_2026-01-04_at_12 25 04_AM-removebg-preview 用于 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, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 可配置连接, 程序分析, 逆向工程, 静态分析