
Tristan Benoît – Approche multimodale pour la génération de noms de fonctions à partir du code binaire
29 avril / 14:00 - 15:00
La compréhension du code binaire est cruciale en rétro-ingénierie. Usuellement, des bases de fonctions servent à identifier dans un binaire les fonctions proches de références connues. Cependant, souvent les projections sous-jacentes traitent chaque code source séparément. En revanche, les modèles de langage récents permettent de projeter le code binaire et sa description textuelle dans un même espace vectoriel, et d’associer des codes binaires ayant des fonctionnalités proches.
Plus simplement, il est aussi possible de générer une description sémantique ou un nom de fonction directement, sans rechercher une fonction proche. Plusieurs méthodes reposent sur des architectures de type transformer, et visent à traduire du langage binaire vers le langage naturel. Notre nouvelle méthode, BLens, inspirée des architectures multimodales pour le sous-titrage d’images, utilise différentes projections de l’état de l’art et les découpe en morceaux pour améliorer la génération des noms. Après un pré-entraînement basé sur une double tâche multimodale (« contrastive captioning »), un nouveau décodeur est ensuite ajouté pour la génération des noms.
Nous montrerons que cette approche surpasse les méthodes existantes, y compris lors de la nomination de fonctions inédites. Nous discuterons aussi des défis liés à l’évaluation des résultats et à la généralisation, face à la spécificité ou la réutilisation des codes sources. Enfin, nous présenterons des pistes futures, comme l’intégration de modules capables de détecter automatiquement des types ou de suggérer des noms de variables, pour des annotations complètes et adaptées à l’usage des spécialistes.