DLL et Code Segment [Résolu]

Signaler
Messages postés
199
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
28 février 2008
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Bonjour, j'ai une question peut-être un peu étrange : en effet, je voudrais savoir si tout le code d'une DLL (par exemple NtDll.dll) est situé dans un seul et même code segment (un peu mal formulé :s) ?

En effet, je me pose cette question car lors de l'execution d'un opcode SYSRET, dans KiSystemService, on utilise un segment de code (un registre CS) qui pointe sur le segment de code user-land (avant l'appel au SYSENTER), c'est-à-dire dans NtDll.dll (en ce qui concerne les appels systèmes windows), ce qui m'amène à une dernière question : le segment de code de NtDll.dll est-il constant ? Autrement dit, est-ce que NtDll.dll est chargée une unique fois (et pour toujours) ?

Merci, j'espere m'avoir fait comprendre ...

___________________
MSP - Microsft Student Partner( Microsoft)
http://touronster.blogspot.com

1 réponse

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Les modules du système sont chargés dans la zone haute de l'espace mémoire du processus et 1 seule fois, cet espace leur est réservé.
Fais un petit prog bidon où tu testeras à divers endroits la valeur retournée par GetModuleHandle("ntdll.dll"), elle ne devrait normalement jamais avoir changé depuis le premier appel car jamais démappée ni remappée.

ciao...
BruNews, MVP VC++