J'ai donc une réponse de Mark. Comme c'est une information à jour, je l'affiche ici. Mais en gros, vous avez raison. En effet, il n'y a pas d'outil pour calculer Build-ID, et les intentions de Build-ID ne sont pas (1) l'identification du contenu du fichier, et pas même (2) l'identification de l'exécutable (code), mais (3) capturer "la signification sémantique" d'une construction, qui est le bit dur pour la formalisation. (Les chiffres sont pour l'auto-référence.)
- « Y at-il un outil utilisateur recalculant l'accumulation id du fichier lui-même, à vérifier si ce n'est pas corrompu/compromis en quelque sorte etc? " Si vous avez le temps, vous pourriez peut-être poster une réponse là-bas?
Désolé, je n'ai pas de compte stackoverflow. Mais la réponse est: Non, il n'y a pas un tel outil, car la façon précise dont un build-id est calculé n'est pas spécifiée. Il doit juste être universellement . Même la longueur précise du build-id n'est pas spécifiée. Il y a différentes manières d'utiliser différents algorithmes de hachage. Un identifiant de construction peut être calculé pour obtenir une valeur universellement unique. Et toutes les données ne peuvent pas (être toujours) dans le fichier ELF pour le recalculer même si vous saviez comment il a été créé à l'origine.
Apparemment, les intentions de construction ont changé ID depuis the Fedora Feature page a été écrit sur il. Et les opinions des gens divergent sur ce que c'est maintenant. Peut-être que dans votre réponse, vous pourriez inclure le statut de Build-ID et ce qu'il est maintenant aussi?
Je pense que les choses n'ont pas été formulées très précisément. Si un outil modifie la construction qui crée le fichier ELF de sorte qu'il ne soit plus un binaire "sémantiquement ", il doit obtenir un nouveau (recalculé) build-id. Mais si un outil change quelque chose à propos du fichier qui reste donne un binaire "sémantiquement identique" alors l'identifiant de construction reste identique à .
Ce qui n'est pas précisément défini est ce que signifie "binaire sémantiquement identique" . L'intention est de capturer tout ce qui a été fabriqué à partir de . Donc, si les fichiers source utilisés pour générer un binaire sont différents, alors vous attendez des ID de construction différents, même si le code binaire produit peut être le même.
C'est pourquoi lors du calcul de l'accumulation id d'un fichier par un algorithme de hachage vous utilisez pas seulement les (affectés) sections de code, mais aussi les sections debuginfo (qui contiendra des références au fichier source noms) .
Mais si vous alors par exemple dépouillez la debuginfo out (et le mettre dans un fichier séparé ) puis qui ne change pas l'accumulation id (le fichier était encore créé à partir de la même construction). C'est aussi pourquoi, même si vous connaissiez l'algorithme de hachage précis utilisé pour calculer l'ID de construction, vous ne pourrez peut-être pas recalculer l'ID de construction . Parce que vous pourriez manquer certaines des données d'origine utilisées dans l'algorithme de hachage pour calculer l'ID de construction.
N'hésitez pas à partager cette réponse avec les autres.
Cheers,
Mark
ok, mais il semble qu'ils ont changé à un moment donné. [Dans cet email] (http://cygwin.com/ml/binutils/2008-11/msg00214.html) Roland McGrath dit: "Le but de l'ID de construction est d'identifier de manière unique le binaire créé par une construction de sorte que son L'identifiant ne correspond qu'à celui d'un binaire sémantiquement identique ", - donc ce n'est pas juste un blob aléatoire. Je ne sais pas comment les choses sont aujourd'hui. [La page de fonctionnalité de Fedora] (https://fedoraproject.org/wiki/Releases/FeatureBuildId) date de 2007 .. – xealits