Kurz gesagt, eine Prozesseinspritzung besteht darin, Code in den laufenden Prozessspeicherraum zu injizieren.
Windows weist für jeden Vorgang 4G Speicherplatz zu, und der Code in diesem 4G -Bereich kann durch diesen Vorgang zugegriffen und ausgeführt werden. "Patching" Die Software ist die Prozesseinspritzung.
Es gibt auch viele Hacker, die eine Prozesseinspritzung verwenden, um böswilligen Code in den Zielprozess für Angriffe zu injizieren.
Zu den häufig verwendeten Prozesseinspritzmethoden in der Windows -Umgebung gehören: CreateRemotethead, Apcinject, Suspendthread, SetWindowhookex usw.
Darüber hinaus habe ich eine relativ einzigartige Injektionsmethode gelernt: Reflexionsinjektion. Die Reflexionseinspritzung wird hauptsächlich zur Implementierung von Injektionen durch Operationen in PE -Dateien mit einer hohen Injektionserfolgsrate und dem wertvollsten Lernen verwendet.
OpneProcess ).VirtualAllocEX ) zu erhalten.WriteProcessMemory ).CreateRemoteThread ). Holen Sie sich die Funktionsadresse der Lastlibrary ( GetProcAddress ) von kenerl32 und geben Sie den dynamischen Bibliotheksweg über den Zielprozess als Parameter über.WaitForSingleObejct ), den Speicher befreien und den Griff schließen.CreateProcess hat den sechsten Parameter ausgesetzt.QueueUserAPC -Funktion, um LoadLibrary APC -Warteschlange des Threads als APC -Objekt als APC -Objekt hinzuzufügen und den Pfad der DLL als Parameter zu übergeben. Achten Sie auf freie Griffe und Speicher. Die Gesamtidee besteht darin, die loadlibrary -Funktion zu implementieren, die die dynamische Bibliothek in der DLL lädt und sich in den Zielprozess lädt.
Loadibrary -Funktion wird implementiert, indem die PE -Datei geändert wird:
1. Schreiben Sie die DLL in den Anwendungsraum des Zielprozessadresses.
2. Erhalten Sie die Adresse der Funktion, die sich in der in der DLL implementierten Datei selbst lädt, einen Remote -Thread erstellen und die Adresse der Funktion übergeben. Die Funktion, die sich in der DLL lädt, wird ebenfalls genial implementiert.
setWindowsHookEX -Funktion. Windows -Betriebssystem, VS2015.
Beide Tests werden im 32-Bit-Windows-System und im 64-Bit-Windows-System übernommen.
.
|-- 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 // 项目说明文件
.
Willkommen bei Pull -Anfrage und willkommen, um nach Problemen zu fragen.
Unterzeichnen Sie bei der Interpretation dieser Arbeit bitte auf die gleiche Weise.