I bug del software che causano la corruzione della memoria sono una caratteristica comune e pericolosa dei sistemi sviluppati in alcuni linguaggi di programmazione. Tali bug sono vulnerabilità di sicurezza se possono essere sfruttati da un aggressore per attivare l'esecuzione di codice dannoso. Determinare se esiste questa possibilità è un processo che richiede tempo e competenze tecniche in diverse aree. Spesso l'unico modo per essere certi che un bug sia effettivamente sfruttabile da un aggressore è costruire un exploit completo. È questo processo che cerchiamo di automatizzare. Presentiamo un nuovo algoritmo che integra l'analisi dei flussi di dati e una procedura decisionale con l'obiettivo di costruire automaticamente degli exploit. Gli exploit che generiamo sono costruiti per dirottare il flusso di controllo di un'applicazione e reindirizzarlo verso codice dannoso.