L'injection de processus en bref consiste à injecter du code dans l'espace de mémoire de processus en cours.
Windows alloue l'espace mémoire 4G pour chaque processus, et le code de cet espace 4G est accessible et exécuté par ce processus. "Patching" Le logiciel est en fait l'injection de processus.
Il existe également de nombreux pirates utilisant l'injection de processus pour injecter du code malveillant dans le processus cible pour les attaques.
Les méthodes d'injection de processus couramment utilisées dans l'environnement Windows comprennent: CreateRemoteThRead, apCinject, Suspendthread, SetwindowhooKex, etc.
De plus, j'ai appris une méthode d'injection relativement unique: l'injection de réflexion. L'injection de réflexion est principalement utilisée pour mettre en œuvre l'injection via des opérations sur les fichiers PE, avec un taux de réussite à l'injection élevé et l'apprentissage le plus précieux.
OpneProcess ).VirtualAllocEX ).WriteProcessMemory ).CreateRemoteThread ). Obtenez l'adresse de la fonction du LoadLibrary ( GetProcAddress ) de Kenerl32 et passez le chemin de bibliothèque dynamique écrit au processus cible dans le chargeur de chargement en tant que paramètre.WaitForSingleObejct ), libérez la mémoire et fermez la poignée.CreateProcess définissez le sixième paramètre à suspendre.QueueUserAPC pour ajouter LoadLibrary comme un objet APC à la file d'attente APC du thread et transmet le chemin de la DLL en tant que paramètre. Faites attention aux poignées et à la mémoire de libération. L'idée globale est d'implémenter la fonction loadlibrary qui charge la bibliothèque dynamique dans la DLL et de se charger dans le processus cible.
Loadibrary est implémentée en modifiant le fichier PE:
1. Écrivez la DLL dans l'espace d'application de l'espace d'adresse du processus cible.
2. Obtenez l'adresse de la fonction qui charge la sienne dans le fichier implémenté dans la DLL, créez un thread distant et passez l'adresse de la fonction. La fonction qui se charge dans la DLL est également implémentée ingénieusement.
setWindowsHookEX . Système d'exploitation Windows, VS2015.
Les deux tests sont passés dans le système Windows 32 bits et le système Windows 64 bits.
.
|-- APCInject(Ring0) // 驱动层的APC注入
|-- APCInject // Ring3层的APC注入
|-- CreateSuspend // 挂起线程注入
|-- InjectByRegister // 注册表注入(未测试)
|-- ReflectDll // 反射注入的Dll
|-- ReflectiveInject // 反射注入
|-- RemoteThread // 远程线程注入
|-- Src // 驱动层的APC注入源码
|-- Dll.dll // 32位测试Dll
|-- Dll64.dll // 64位测试Dll
|-- Process-Inject.sln // 项目启动文件
|-- README.md // 项目说明文件
.
Bienvenue à la demande de traction et bienvenue pour demander un problème.
Lorsque vous interprétez ce travail, veuillez le signer et le partager de la même manière.