在本文中,将列出七种在Windows系统下可应用于用户模式进程的动态链接库(DLL)注入技术。以下技术包括AppInit_DLLs注册表项、SetWindowsHookEx API、Image File Execution Options(IFEO)注册表项、远程线程、隐式跟踪所有进程、AppCompat shimming层以及内核驱动程序。AppInit_DLLs注册表项在以往被人们广泛依赖,它允许操作系统加载程序在创建进程时加载指定的DLL。但该技术现今已受到恶意软件的广泛使用,可能已受到限制或停止使用。SetWindowsHookEx API则允许将自定义钩子函数注入到相关进程中,当其他进程从USER32.dll导入/使用功能时,Windows Hook将开始工作。IFEO注册表项提供便利,允许指定在创建进程、启动AppVerifier插件或更改进程堆选项时调用调试程序。通过实验,作者在IFEO键上创建了一个AppVerifier插件,并注入到所选进程中。远程线程技术依赖于将远程线程创建到目标进程中,通过简单地在目标进程中调用LoadLibrary来实现注入。隐式跟踪所有进程方法依赖于进程创建API的Hook,如kernel32.CreateProcess [Internal]或更低级别的API,以跟踪其他进程的创建并有机会将DLL注入到新进程中。应用兼容性(AppCompat)shimming层技术,在微软工作期间接触EMET项目时发现。该层包含名为AppPatch.dll的系统DLL,它读取一个描述各种应用程序兼容性调整/修补功能的自定义格式数据库(SDB)。SDB可以包含内存搜索/替换、加载/注入DLL到进程、假API返回等操作。在EMET项目中,作者使用该技术来注入DLL到所需的进程中。AppPatch机制被集成到操作系统的进程加载程序(ntdll.dll)中,因此,它并非真正的“注入”,而更像是加载进程的一部分。最后,内核驱动程序是一种将代码注入所有正在运行进程的可靠方法,但并非纯粹的用户模式方法。著名的防病毒软件通常使用内核驱动程序进行代码注入。在注册图像时创建通知,并在用户模式下执行并注入所需APC。总的来说,DLL注入是一个引人入胜的主题,提供了多种技术选择,对系统开发人员极为有益。每种技术在注入的灵活性、安全性(避免被防病毒软件检测)和持久性方面具有不同的特性。