2011-04-25 4 views
1

Cela devrait être une question simple: je sais que VA = RVA + imagebase pour un PE, maintenant j'essaie de trouver dans un désassembleur une chaîne et se trouve à 0042720E dans la section .text .VA et adresses mémoire

La base d'image est 400000 et 2720E est le RVA, c'est bon jusqu'à maintenant.

Mais pourquoi quand je charge l'exe dans un débogueur la mémoire où l'instruction est mappée est 0140720E? (Ce que je vois dans le RAM) et 0042720E (le VA) diffère par FE0000, pourquoi est-ce? Est-ce que je manque quelque chose?

+0

Sur quelle plate-forme travaillez-vous? – JaredPar

+0

win32, PE est exécutable portable –

+0

@Paul: Est-ce que .exe particulier contient une table de relocalisation de base? – ildjarn

Répondre

4

Il n'y a vraiment que deux possibilités: une réaffectation s'est produite ou vous avez eu la mauvaise erreur. Le plus probable est sa réallocation, surtout si vous utilisez Windows Vista ou Windows 7 en raison de ASLR. Ollydbg est l'un de ceux-ci (vous devez lancer l'application via ollydbg, même pour les adresses de chargement de section de base spécifiées dans le PE, selon la façon dont vous avez attaché et quel débogueur utilisez, il est possible d'obtenir le débogueur dlls)

+0

Est-ce valable aussi pour le débogueur VS? L'adresse semble la même –

+0

@Paul: Non, le débogueur VS ne fait pas une telle traduction; il rapporte les AV tels quels. Si ASLR est en jeu, alors la fenêtre Modules devrait afficher l'adresse de base réelle du module chargé et à partir de là, vous pouvez appliquer le RVA. –

+0

Oui, il affiche en effet une adresse qui ajoutée à la RVA donne exactement l'adresse d'instruction. Alors, quelle est cette adresse? Une base d'images + quelque chose à part? –

Questions connexes