La rétro-ingénierie consiste à étudier un système pour en comprendre le fonctionnement interne ainsi que les entrées et sorties attendues. La rétro-ingénierie est nécessaire dans différents cadres d’emploi liés à la sécurité, tels que l’analyse de robustesse et de vulnérabilités de programmes, l’analyse de malware ou encore l’évaluation et l’audit d’applications tierces. La rétro-ingénierie peut enfin être mise en œuvre pour rendre interopérable un logiciel avec un format de communication ou de sérialisation propriétaire.