2009-08-13 8 views
1

Existe-t-il un moyen d'afficher la différence entre deux fichiers DLL binaires? J'ai des PDB pour les deux.Comment puis-je afficher les différences entre deux DLL?

Idéalement, je voudrais voir:

  • Quelles fonctions ont été ajoutées
  • Quelles fonctions ont été supprimées
  • Quelles fonctions ont été modifiées (avec un diff du démontage)
  • Quelles autres entrées (variables statiques, ressources, etc.) ont été ajoutées/supprimées/modifiées

Remarque: cela est différent de this question car j'ai affaire à des DLL natives.

Répondre

3

Si vous voulez comparer les fichiers exécutables, vous avez deux alternatives:

  • Bindiff: il est une extension commerciale pour le désassembleur commerciale IDA Pro. C'est un outil de facto pour l'ingénierie inverse. Selon la description du vendeur, il vous permet de:
    • Identifier des fonctions identiques et similaires dans les différents binaires
    • noms de fonction Port, antérieure et des lignes de commentaires postérieurs, commentaires standard et les noms locaux d'un désassemblage à l'autre
    • détecter & mettre en évidence les changements entre les deux variantes de la même fonction

http://www.zynamics.com/bindiff.html

  • Vous avez encore une alternative gratuite: PatchDiff. Comme Bindiff, c'est aussi un plugin pour IDA Pro. Selon le développeur, Patchdiff peut effectuer les tâches suivantes:
    • Afficher la liste des fonctions identiques
    • Afficher la liste des fonctions adaptées
    • Afficher la liste des fonctions inégalées (avec la CRC)
    • Affichage un diagramme d'écoulement pour des fonctions identiques et adaptés

http://cgi.tenablesecurity.com/tenable/patchdiff.php

+0

IDA Pro + PatchDiff est parfait. – pauldoo

0

Une approche «low tech» (pas de désassemblage) serait d'utiliser DUMPBIN /ALL (ou un autre commutateur, en fonction de ce que vous voulez savoir exactement) sur les DLL et de faire une comparaison de texte sur le résultat.

Questions connexes