Students will complete three small introductory projects that acclimate students
to working with program analysis tools.
These introductory projects shall be done individually, but students should feel
free to discuss them.
Sharing code is prohibited.
Using those experiences, students will also complete a term project of their
own interest and selection, which may be done in groups of up to three.
- LLVM - Tools & IR for analysis & compilation
- Valgrind - Dynamic binary analysis framework
- Pin - Dynamic
binary analysis framework
- WALA - Java & Javascript analysis
- Soot - Java & Dalvik analysis
- CIL - C analysis
- Frama-C - C analysis
- Astrée
- Roslyn - C# analysis and transformation
- K - General formal analysis
- CSmith - Test generation for C
- Major - Mutation analysis for Java
- CREST - Symbolic test generation for C
- KLEE - Symbolic test generation for C
- SMACK
- angr - Binary analysis & symbolic execution framework
- rev.ng - Binary reverse engineering tools
- radare2 - Binary reverse engineering framework
- Cuckoo - Sandbox for malware analysis
- Unicorn - multi-architexture CPU emulation
- Rosette - Solver-aided programming for synthesis and verification
External Resources