Os erros de software que resultam em corrupção de memória são uma caraterística comum e perigosa dos sistemas desenvolvidos em determinadas linguagens de programação. Esses erros são vulnerabilidades de segurança se puderem ser aproveitados por um atacante para despoletar a execução de código malicioso. Determinar se existe essa possibilidade é um processo moroso e requer conhecimentos técnicos especializados em várias áreas. Muitas vezes, a única forma de ter a certeza de que um bug é de facto explorável por um atacante é construir uma exploração completa. É este processo que procuramos automatizar. Apresentamos um novo algoritmo que integra a análise do fluxo de dados e um procedimento de decisão com o objetivo de construir automaticamente explorações. As explorações que geramos são construídas para desviar o fluxo de controlo de uma aplicação e redireccioná-lo para código malicioso.