Question

Notre équipe d’assurance qualité souhaite axer ses tests sur les modifications apportées aux fichiers EXE et DLL entre les versions. Nous avons un bon rapport svn change, mais la relation entre les binaires source et modifié n'est pas toujours évidente. Les versions que nous comparons sont toujours des versions totalement propres, nous ne pouvons donc pas utiliser les horodatages du système de fichiers. Je cherche des outils pour comparer les fichiers binaires PE Windows (et Windows CE) qui ignorent les horodatages et autres données creuses. Des recommandations concernant des outils ou d'autres moyens permettant de générer un rapport fiable indiquant que les fichiers binaires ont vraiment changé? Merci.

clarification: Merci pour les réponses reçues jusqu'à présent, mais nous ne pouvons pas générer le rapport en effectuant des comparaisons simples octet par octet ou en comparant les sommes de contrôle, car tous les fichiers paraissent différents à chaque création, même si les sources ont t changé, à cause des horodatages que le compilateur insère. Le problème est de savoir comment ignorer les faux positifs. Le démonter & amp; Je pense que l’idée de comparaison se rapproche le plus de ce dont nous avons besoin.

a répondu! Bindiff est exactement ce que je cherchais. Merci beaucoup.

Était-ce utile?

La solution

Avez-vous consulté Bindiff ?

Autres conseils

J'ai déjà rencontré ce problème. Ma solution a été d'écrire un outil qui définit tous les horodatages d'un fichier .EXE / .DLL sur une valeur connue. Je voudrais l'exécuter comme une étape post-construction. Les différences binaires fonctionneraient alors très bien.

Vous pourriez peut-être désassembler le binaire, puis faire un diff sur l'assemblage ...

Cela donne à penser que votre équipe d’assurance qualité adopte la mauvaise approche… Cela n’a aucune importance pour eux de comprendre le code; juste qu'il fait ce qu'il est censé faire.

Modifier: Oh! Après l'avoir relue, j'ai compris que j'avais mal interprété votre question. Je pensais qu'ils voulaient tester les méthodes qui avaient changé ...

Dans ce cas, pourquoi ne pas obtenir le hachage MD5 et le comparer? Le plus petit changement provoquera un hachage totalement différent.

Vous ne savez pas quel type de fichiers binaires (DLL? Fichiers exécutables PE / WinCE uniquement? Autre?) Est-il possible d'incorporer des informations de version dans les fichiers binaires, par exemple. en utilisant une balise de contrôle source qui met à jour la version dans le code source lors des validations. Ensuite, lorsque la nouvelle version est créée, le binaire aura également sa chaîne de version mise à jour. Au lieu de devoir comparer un fichier binaire, vous pouvez utiliser la chaîne de version et vérifier si des modifications ont été apportées.

Regardez NDepend .

Quand je travaillais sur le " foyer maison " outil de vérification de l’installation de mon entreprise, nous avons utilisé au-delà de la comparaison pour Comparaison.

Il offre une excellente comparaison de fichiers / dossiers (également binaire) et des fonctions de script, et peut générer des rapports XML.

Générateur de graphes de dépendance de projet et Dependency-Grapher pour C ++ - Projects utilisent tous deux GraphViz pour visualiser les dépendances. J'imagine que vous pouvez utiliser l'un ou l'autre comme base pour répondre à vos besoins, en mettant en évidence les branches du graphe de dépendance lorsque les fichiers source ou d'autres feuilles ont été modifiés.

Les hachages ou sommes de contrôle MD5 (comme suggéré ci-dessus), un simple diff ignorant les espaces et filtrant les modifications de commentaires, ou les informations de liste de changlist de votre système de contrôle de version peuvent indiquer les fichiers modifiés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top