A program that uses Blaze to find emergent execution primitives.
The repository structure of Flint
assumes that the repositories for the following dependencies are located adjacently:
For example:
.
├── flint
├── blaze
├── binaryninja-haskell
├── ghidra-haskell
└── binary-analysis
Flint
can be compiled using either cabal
or stack
.
Flint
uses Blaze
for its binary lifting and analysis, which supports both binaryninja
and ghidra
as backends.
The binaryninja
backend requires a headless version of Binary Ninja to be installed, which provides libbinaryninjacore.so
.
The ghidra
backend a Java Development Kit (JDK) to be installed. See the binaryninja-haskell installation instructions.
Each of these dependencies can be specified at build time using the --extra-lib-dirs
flag.
For example:
cabal build --extra-lib-dirs=/path/to/binaryninja --extra-lib-dirs=/path/to/jdk/lib/server
stack build --extra-lib-dirs=/path/to/binaryninja --extra-lib-dirs=/path/to/jdk/lib/server
- Use a single cabal.project file and Cabal flags and conditionals to specify whether to compile -O0 or not.
- Tell projectile to ignore
dist-newstyle
build dir. Also, consider renaming to a hidden folder.
Distribution A. (Approved for public release; distribution unlimited.)