Maison > développement back-end > C++ > le corps du texte

Comment créer des processus directement à partir de tampons de mémoire sans stockage de fichiers ?

DDD
Libérer: 2024-11-02 00:12:02
original
648 Les gens l'ont consulté

How Can Processes Be Created Directly From Memory Buffers Without File Storage?

Création de processus à partir de tampons de mémoire

Dans cet article, nous explorerons une technique pour générer des processus directement à partir de tampons de mémoire sans avoir besoin de stockage de fichiers. Cela peut être des scénarios utiles impliquant l'injection de code ou l'application de correctifs sécurisés, comme dans la trame de fond fournie.

La panne technique

Windows fournit l'API CreateProcess avec l'indicateur CREATE_SUSPENDED, permettant aux processus d'être suspendus jusqu'à ce que la fonction ResumeThread soit invoquée. Cette fenêtre offre la possibilité de manipuler la mémoire et le contexte du processus avant l'exécution.

  1. Suspendre et inspecter le processus : Suspendez le processus à l'aide de CreateProcess(CREATE_SUSPENDED) et récupérez le contexte du thread suspendu à l'aide GetThreadContext.
  2. Identifier l'adresse de base : Le registre EBX contiendra un pointeur vers la structure du bloc d'environnement de processus (PBE). L'ImageBaseAddress peut être trouvée au décalage 8 dans le PBE.
  3. Préparez l'EXE en mémoire : Si les adresses de base du processus suspendu et de l'EXE en mémoire correspondent et l'EXE en mémoire EXE est plus petit ou de taille égale, écrivez-le directement dans la mémoire du processus suspendu à l'aide de WriteProcessMemory.
  4. Magie requise : Si les conditions de l'étape 3 ne sont pas remplies, démapper l'image d'origine ( ZwUnmapViewOfSection), allouer de la mémoire à l'aide de VirtualAllocEx et écrire l'EXE en mémoire à l'aide de WriteProcessMemory.
  5. Patch PEB et Thread Context : Mettre à jour l'ImageBaseAddress du processus suspendu avec l'adresse de base de l'EXE en mémoire , corrigez l'adresse EntryPoint du contexte de thread et enregistrez le contexte modifié à l'aide de SetThreadContext.
  6. Reprendre l'exécution : Reprenez le processus suspendu à l'aide de ResumeThread pour exécuter l'EXE en mémoire.

Conclusion

En suivant ces étapes, il est possible de créer des processus à partir de tampons mémoire, offrant une flexibilité dans les scénarios d'injection de code et de correctifs sécurisés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!