National audienceL'analyse de programmes sans code source, regroupant la recherche de vulnérabilités et l'analyse de logiciels malveillants, relève actuellement plus de la programmation système que de l'algorithmique. Par conséquent, ces champs de recherche ne bénéficient pas des avancées en analyse de code et en optimisation. Nous proposons un cadre formel basé sur l'analyse de traces perme- ttant de raisonner sur les propriétés algorithmiques des programmes bi- naires. Nous avons appliqué ce cadre à l'analyse des programmes auto- modifiants comme par exemple les malwares compressés ou chiffrés, et nous avons validé son utilité par l'expérience en testant une implémenta- tion sur un grand nombre d'échantillons collectés sur des honeypots. Les traces présentent un intérêt évident pour l'ingénierie inverse : faciles à collecter de manière générique avec différents outils (même statiques) et plus fiables que le désassemblage, elles permettent de raisonner avec exactitude sur les effets d'un programme sur le système, les flux de don- nées ou encore les multiples chemins d'un exécutable. Elles sont donc une manière simple et élégante d'unifier les différentes branches de l'analyse de programmes