Memimage

effectue une mémoire de mémoire à l'aide de NTSYSTEMDEBUGCONTROL
Télécharger maintenant

Memimage Classement & Résumé

Publicité

  • Rating:
  • Licence:
  • Freeware
  • Nom de l'éditeur:
  • Arne Vidstrom
  • Systèmes d'exploitation:
  • Windows All
  • Taille du fichier:
  • 7 KB

Memimage Mots clés


Memimage La description

L'application MemimIger a été conçue pour être un outil qui effectue une vidée de mémoire à l'aide de NtsysemdebugControl. Utilisation de NtsystemdebugControl pour le dumping Pour le code de contrôle 10, nous utilisons une structure avec la disposition suivante comme tampon d'entrée: - DWORD PhysicalAddress; - Dword réservé1; - nul * tampon; - DWORD longueur; Ensuite, nous pouvons par exemple MALLOC un tampon de taille de page que nous mettons au-delà de la mémoire tampon, écrivez une longueur 4096 et point physique à l'adresse de la page que nous souhaitons copier le contenu de. Ensuite, nous exécutons Ntsystemdebugcontrol et si tout va bien, notre tampon contient maintenant une copie des données dans la page physique. Assez trivial en fait. Inside NtsysemdebugControl Pour comprendre si, et si oui, NtsysemdebugControl gère des problèmes de mise en cache, nous devons prendre une plongée dans le noyau. Le noyau exporte la routine appelée NtsysemdebugControl, qui contient une instruction de commutation chargée de l'expédition à la fonctionnalité correcte en fonction du code de contrôle. Dans ce qui suit, je ne vais pas décrire tous les petits détails du code. La première raison étant qu'il existe de nombreux détails qui ne sont pas pertinents pour ce que nous examinons. Deuxièmement, je n'ai pas décompilé le code, mais ne suivait que les parties pertinentes du démontage (à partir d'un noyau Windows Server 2003 SP0). Le code de contrôle de la manutention de code 10 appelle la routine non documentée _exlockuserbuffer qui rend les pages dans notre résident de mémoire tampon (* tampon), les verrouillent en mémoire et les retours (dans un pointeur transmis sous forme de paramètre) une adresse virtuelle de l'espace système pointant vers elle. Ensuite, une autre fonction non documentée nommée _kdpcopymemorychunks est appelée. Les paramètres transmis sont entre autres l'adresse virtuelle spatiale du système pointant vers notre mémoire tampon, le nombre d'octets à copier (longueur) et l'adresse à copier de (physicaladdress). Maintenant, une autre fonction non documentée est appelée: _mmdbgcopymorior. Cette fonction effectue la copie réelle des données. Mais avant de pouvoir effectuer une copie, il doit avoir une adresse virtuelle de la source au lieu d'une adresse physique. Par conséquent, il appelle notre dernière fonction sans papiers: _MidbgTranslatephysicalAddress. Maintenant, nous fermons vraiment la réponse à notre question. _MidbgTransLatefysicalAdress reçoit notre adresse physique comme paramètre. Il utilise ensuite une variable appelée _validkernelpte, qui sert de modèle de modèle pour le noyau PTE: s. Les drapeaux du modèle sont combinés à l'adresse physique pour former une PTE pointant vers la page que nous voulons copier. Ensuite, la base de données PFN est indexée pour trouver l'entrée correspondant à notre page source. Dans cette entrée, le noyau regarde les drapeaux Cacheattribute du membre U3e1. Les drapeaux Cacheattribute sont ensuite utilisés pour définir l'index Pat dans la PTE. Maintenant, nous avons notre réponse vraiment, mais je poursuivrai un peu plus loin de toute façon. La PTE Le noyau a été construit est maintenant copié à l'emplacement indiqué par la variable du noyau _MMDEBUGPTE. Enfin, la fonction renvoie l'adresse virtuelle qui utilisera le PTE pour la cartographie. Maintenant, _MMDBGCOPYMorior est libre de copier les données de la page source physique à notre mémoire tampon uniquement à l'aide d'adresses virtuelles uniquement.


Memimage Logiciels associés