In this software we implement several symbolic execution analyzers that are sound. Also there is an implementation of dependence analysis from Static Analysis of Information flow using Hypercollecting Semantics [1].
This project is implemented in OCaml 4.12.0, but any version should work. To install OCaml and OPAM you can check the following link.
Also several opam libraries are required:
z3
is being used to check propositions,bitv
is used to model security lattices,dune
is the builder, andapron
is a library for abstract domains. These can be installed withopam install z3 bitv dune apron
The project is built using dune:
- to build:
make
, equivalent todune build --root src main.exe
. - to clean:
make clean
, equivalent todune --root src clean
.
The link to the executable can be found in the current directory.
It is important to notice that the compilation does not work with bytecode automatically, we need to define a environment path.
Compiled program is main.exe
and is used by activating switches and providing
a program to execute.
To execute the tests of the submission:
./main.exe --test
To execute different analyses of different programs:
./main.exe [ switches ] <file>
Switches for non-relational analysis are as follows:
--sse
activates sound symbolic execution.--intvs
activates intervals domain.--poly
activates convex polyhedra domain.
For relational analysis:
--rse
activates relational symbolic execution.--dep
activates dependence analysis.
By combining the switches we can get the different combinations presented on the submission. We will list them:
./main.exe --sse <file>
executes SoundSE../main.exe --sse --intvs <file>
executes RedSoundSE with intervals../main.exe --sse --poly <file>
executes RedSoundSE with polyhedra../main.exe --rse <file>
executes SoundRSE../main.exe --rse --dep <file>
executes RedSoundRSE../main.exe --rse --dep --intvs
executes RedSoundRSE instantiated with RedSoundSE with intervals../main.exe --rse --dep --intvs
executes RedSoundRSE instantiated with RedSoundSE with polyhedra.
src/
contains all source OCaml files plus dune build files.programs/
contains programs to analyze.