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) ?
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.