objdump ajuste le décalage de vma dans les utilitaires gnu

dans les utilitaires binarys gnu disent-ils

objdump --adjust-vma=offset 

Lors du dumping d’informations, ajoutez d’abord l’offset à toutes les adresses de section. Cela est utile si les adresses de section ne correspondent pas à la table des symboles, ce qui peut se produire lors de la mise en place de sections à des adresses particulières lorsque vous utilisez un format qui ne peut pas représenter les adresses de section, telles que a.out.

J’essaie de le comprendre mais je ne pouvais pas, alors quelqu’un peut-il m’expliquer ce que cette option fait? et quelle circonstance a besoin de cette option dans la vraie vie?

Cette option est surtout utile lorsque vous essayez de désassembler des fichiers binarys COM DOS. Un fichier binary COM est une image de programme sans en-tête chargée à l’adresse 0x100 dans un segment et exécutée en sautant à l’adresse 0x100.

objdump ne le sait pas (après tout, il n’y a aucun moyen de détecter qu’un fichier est un binary COM) et désassemble le binary comme s’il était chargé à l’adresse 0. En passant --adjust-vma=0x100 corrige ce comportement et rend objdump désassemble le binary comme s’il était chargé à 0x100 (ce que nous voulons).

Outre l’excellente réponse de fuz , un autre cas d’utilisation concerne le code qui se déplace lui-même (l’exemple archétypal est le code de l’ enregistrement de démarrage principal IBM-PC). l’un est possible mais pas les deux à la fois), cette option vous permet de présenter le vidage alternatif.