Ring3下若干注入方法
一、CreateRemoteThread (NtCreateThreadEx)
1.通过OpenProcess获得目标进程Handle
2.通过VirtualAllocEx在目标进程里申请内存空间,用来写入代码
3.通过WriteProcessMemory,把要注入的DLL全路径写到刚才申请的内存上
4.通过CreateRemoteThread/LoadLibrary把DLL映射到目标进程
5.WaitForSingleObject等待DllMain退出
6.通过GetExitCodeThread获取DllMain返回码
7.通过VirtualFreeEx把上面申请的内存释放掉
8.通过CreateRemoteThread/FreeLibrary可以卸载目标进程的指定DLL
二、SetThreadContext (change the EIP)
三、NtQueueAPCThread
四、通过Hook NtMapViewOfSection修改OEP的代码来注入
五、RtlCreateUserThread
六、通过注册表注入
注册表键值:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
当加载User32.dll的时候此注册表里的DLL,并通过LoadLibrary方式加载进来