Question:
Existe-t-il des suites de tests open source pour tester les performances d'un désassembleur?
WilliamKF
2013-03-20 20:56:58 UTC
view on stackexchange narkive permalink

Un outil clé de la rétro-ingénierie est un bon désassembleur, donc pour s'assurer qu'un désassembleur fonctionne correctement, existe-t-il de bonnes suites de tests disponibles pour tester l'exactitude d'un désassembleur? Ces architectures sont-elles spécifiques ou peuvent-elles être configurées pour fonctionner sur plusieurs architectures d'objets? Un bon test devrait inclure la vérification des instructions d'architecture les plus obscures et des fichiers d'exécution portables mal formés.

En voici un spécifiquement pour i86 que j'ai vu. Y en a-t-il qui sont modulaires entre les architectures?

Lorsque vous dites «exactitude d'un désassembleur», voulez-vous dire l'exactitude d'un décodeur d'instructions, ou voulez-vous dire une récupération correcte du graphe de flux de contrôle et d'autres types d'informations sémantiques de haut niveau?
Eh bien, quelle est la question la plus intéressante? Je suppose que la récupération du graphe de flux plus tard, correcte ...
Cinq réponses:
#1
+13
QAZ
2013-03-20 21:31:39 UTC
view on stackexchange narkive permalink

Il existe un article intitulé " Démontage de la version N: Test différentiel des désassembleurs x86" (PDF) de Roberto Paleari, Lorenzo Martignoni, Giampaolo Fresi Roglia et Danilo Bruschi qui compare plusieurs désassembleurs x86 dans une mode formelle.

Pour citer le résumé des articles:

La sortie d'un désassembleur est utilisée à de nombreuses fins différentes (par exemple, le débogage et l'ingénierie inverse). Par conséquent, les désassembleurs représentent le premier maillon d'une longue chaîne d'étages dont dépend toute analyse de haut niveau du code machine. Dans cet article, nous démontrons que de nombreux désassembleurs ne parviennent pas à décoder certaines instructions et donc que le premier maillon de la chaîne est très faible. Nous présentons une méthodologie, appelée désassemblage de la version N, pour vérifier l'exactitude des désassembleurs, basée sur une analyse différentielle

Je ne sais pas si cela est légèrement hors sujet par rapport à votre question mais peut être intéressant pour vous.

Papier intéressant! Pas une conclusion totalement surprenante. Godefroid et Taly ont un MSR TR (http://research.microsoft.com/apps/pubs/default.aspx?id=156020) où ils automatisent la synthèse d'instructions et découvrent des erreurs dans leur sémantique spécifiée manuellement.
#2
+8
Andrew
2013-03-20 21:37:43 UTC
view on stackexchange narkive permalink

Dans de nombreux articles que j'ai lus, les auteurs d'outils de décompilation utilisent les benchmarks SPEC pour mesurer l'efficacité de leur décompilateur. Cela produit une sorte de vision holistique du fonctionnement du système, du décodage des instructions au contrôle de la récupération du flux. Cependant, ces benchmarks ne sont pas gratuits ou open source.

Les compilateurs GCC et clang sont également livrés avec des benchmarks pour les tests. Celles-ci pourraient valoir la peine d'être étudiées.

De plus, le projet csmith de Regehr peut générer des programmes C arbitraires pour les tests / fuzzing du compilateur. Cela pourrait être utile pour tester les décompilateurs et les systèmes d'analyse binaire?

FWIW, nous utilisons `cmith` pour tester le décompilateur Hex-Rays, et cela aide.
#3
+6
Ed McMan
2013-03-21 06:35:05 UTC
view on stackexchange narkive permalink

La suite de tests de gaz à laquelle vous vous connectez n'est pas uniquement destinée à l'i386. Le répertoire parent contient des cas de test pour x86-64, arm, alpha et de nombreuses autres architectures.

#4
+5
Ange
2013-03-22 13:12:42 UTC
view on stackexchange narkive permalink

J'ai créé un fichier contenant tous les opcodes x86 (à l'époque) et de nombreuses formes d'encodage, ce qui m'a aidé à trouver activement de nombreux bogues dans de nombreux désassembleurs (IDA, Hiew, BeaEngine, OllyDbg, XED, hte ...), en particulier les formulaires moins connus et non documentés.

(peut-être légèrement hors sujet - pas une suite de tests prête à l'emploi)

Avez-vous signalé des bogues pour tous? Ont-ils été réparés?
Je l'ai fait, ils l'étaient.
#5
+2
jvoisin
2015-08-25 00:05:16 UTC
view on stackexchange narkive permalink

Le projet radare2 utilise une suite de tests étendue pour chacun de ses moteurs de désassembleur, ainsi que des tests plus spécifiques, comme les formats, son propres capacités d'analyse,…



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...