2010-09-07 7 views
1

Je débogue du code à partir du désassemblage (aucun code source n'est disponible), et un certain nombre d'instructions accèdent aux données via le registre de segment ds, par ex. quelque chose comme ceci:Comment afficher les adresses de mémoire à décalage de segment dans le débogueur Visual Studio?

66 3B 05 8A B1 43 00 cmp   ax,word ptr ds:[43B18Ah] 

Comment obtenez-vous le débogueur Visual Studio pour vous dire le décalage du registre de segment ds afin que je puisse inspecter la mémoire cela fait référence à? La fenêtre Regarder ne semble pas accepter des expressions comme ds:[0x43B18A] ou des variantes; il me dira que ds est 0, mais cela ne me dit pas quel est le décalage du segment 0.

Existe-t-il une syntaxe spéciale ou est-ce quelque chose que VS ne peut pas faire? Aurais-je plus de chance avec un autre débogueur, tel que WinDbg ou ntsd?

+1

Vous aurez plus de chance avec WinDbg, Olly, ou PE Explorer ou même IDA Pro ... – t0mm13b

Répondre

2

Code impair, le registre DS est la valeur par défaut. Il suffit de l'ignorer, sous Windows, les registres DS, CS et ES ont la même valeur. Un sélecteur de mode protégé. Et la même valeur utilisée par la fenêtre de mémoire. Il suffit d'omettre le préfixe ds:

+0

Merci, je ne sais pas pourquoi je n'ai pas pensé à quelque chose d'aussi simple. Je sais que les registres de segment sont utilisés pour les choses liées à la DLL, donc je pensais que cela pourrait pointer dans le segment de données d'une DLL ou quelque chose. –

Questions connexes