2011-05-16 3 views
0

Dans le livre rootkits: Subvertir le noyau Windows Chapitre 5: Runtime Patcher page 120-125 (Greg Hoglund, James Butler, 2006)utilisation peu claire des FAR JMP

il dit que JMP FAR 0x08:0xAAAAAAAA sera sauter à 0xAAAAAAAA

mais Wiki dit 0x08:0xAAAAAAAA = (0x08 * 0x10) + 0xAAAAAAAA

ce qui est vrai.

+0

Je n'ai aucune idée de ce que vous demandez? –

Répondre

5

En mode protégé, les valeurs de sélecteur (la partie de segment de l'adresse dans votre exemple) ne pas utiliser le calcul de « décalage par 4 ». Au lieu de cela, la valeur est utilisée comme un index dans la table des descripteurs Local ou Global et l'adresse de base de la table est utilisée.

Le code lié semble être fait pour Windows. Windows utilise un modèle de mémoire simple et plat, où la plupart des sélecteurs mappent l'ensemble de l'espace adresse 4BG avec la base de 0. C'est pourquoi le sélecteur 8 sera mappé à 0 et le saut ira à l'adresse 0xAAAAAAAA.

Je ne sais pas quel est le point d'utiliser un saut loin, je pense un saut normal (sans recharger le sélecteur) fonctionnerait tout aussi bien.