DLL et Code Segment

Résolu
Taron31 Messages postés 199 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 28 février 2008 - 27 févr. 2007 à 21:45
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 28 févr. 2007 à 01:47
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 févr. 2007 à 01:47
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++
3
Rejoignez-nous