Taron31
Messages postés199Date d'inscriptionvendredi 16 avril 2004StatutMembreDernière intervention28 février 2008
-
27 févr. 2007 à 21:45
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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) ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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.