-
Genesis, Prophet, SPR, and Kali
Genesis ,
Prophet,
SPR, and
Kali
are automatic patch generation systems for large real-world C programs.
Genesis, Prophet, SPR, and Kali are available here.
Genesis and Prophet pioneered the use of machine learning in automatic patch generation.
Because Kali only deletes functionality, we do not recommend
using it to obtain patches that change or add functionality.
-
CodeCarbonCopy and CodePhage
CodeCarbonCopy and
CodePhage
are systems for automatically finding and transferring code between applications.
CodePhage automatically transfers security checks between applications to eliminate
security vulnerabilities. CodeCarbonCopy transfers complete blocks of functionality
from a donor application into a recipient application.
-
DIODE
is a system for automatically generating inputs that trigger integer and
buffer overflows.
-
DroidSafe
is a static information flow analysis for Android applications. DroidSafe is available
here and
here.
-
Chisel and Rely
Chisel
and
Rely
are systems for reasoning about the accuracy and reliability
of programs that execute on approximate hardware platforms.
The papers presenting these systems won Best Paper awards
at OOPSLA 2014 and OOPSLA 2013.
-
RCV implements recovery shepherding, which attaches to the
application process when an error occurs, repairs the
execution, tracks the repair effects within the application process,
and detaches from the process after all repair effects are flushed
from the process state. The current implementation of RCV enables
applications to recover from divide by zero and null dereference
errors.
-
jppa and jpaul
The Java Pointer and Purity Analysis Tool (jppa)
and Java Program Analysis Utilities Libraries (jpaul)
implement Java program analysis algorithms. They have been used in a number of projects.
-
SIFT
uses static program analysis to generate input
filters that discard inputs that may trigger integer overflow
errors in the computations of the sizes of allocated
memory blocks or the number of copied bytes in block copy
operations. SIFT is sound - if an input passes the filter,
it will not trigger an overflow error at any analyzed site.
-
A program analysis and compilation system written in Java for Java,
complete with extensive backend, thread, memory management, and
runtime support.
-
A pointer analysis package for both multithreaded and
sequential C programs. The package is integrated with the
SUIF Compiler Infrastructure and has been used by several
research groups to support a variety of projects.
-
A portable, implicitly parallel programming language that
runs on wide range of machines, from tightly-coupled shared-memory
multiprocessors to geographically distributed networks of
workstations.