Impacto de Ofuscadores e Otimizadores de Código na Acurácia de Classificadores de Programas
Resumo
O problema de detecção de clones consiste em determinar, dado um programa inicial e classes de problemas, qual problema o programa resolve. A detecção de clones é útil em vários contextos diferentes, incluindo a identificação de código malicioso e a identificação de plágio. Uma vez que a solução exata para detecção de clones é uma impossibilidade teórica, esse problema é resolvido via heurísticas; a maior parte delas de natureza estatística. Este trabalho analisa o impacto de técnicas de transformação de código sobre essas heurísticas. Mostramos que otimizações de código padrão são tão efetivas quanto ofuscadores para enganar as heurísticas mais populares para detecção de clones, gerando, contudo, código ordens de magnitude mais eficientes. Mostramos também que histogramas de instruções são tão efetivos quanto representações mais complexas ao executar as heurísticas. E por fim mostramos que otimizações de código podem funcionar como um normalizador de programas, em alguns casos, revertendo o efeito da ofuscação, e recuperando assim a capacidade de um detector estatístico de encontrar clones.