动态链接库
动态链接库(dynamic-link library,DLL)是Windows操作系统提供的一种可执行文件,包含了所有Windows应用程序编程接口(Application Programming Interface, API)提供的函数。DLL作为包含可由多个程序同时使用的代码和数据的库,实现了资源共享,节省内存,使多个应用程序共享DLL在内存中的页面。自16位的Windows操作系统推出以后,Microsoft推出的各版本Windows操作系统都严重依赖动态链接库中的函数和数据。DLL很大程度上简化了项目管理,解决了平台差异,大大提高了软件开发和维护的效率。除上述优点外,DLL也是远程注入技术和Windows挂钩技术的基础技术支持之一。远程线程注入技术
Microsoft出于系统稳定性的需要,在设计操作系统时为每一个进程分配各自的私有地址空间,当进程内线程运行时,只对本进程内存享有访问控制权限。这种稳定的设计为访问其他进程资源设置了阻碍,远程线程注入技术的出现打破了这一局限。远程线程注入的核心思想是在另一个进程中创建远程线程,从而进入目标进程的地址空间,通过加载DLL文件,使目标进程积极配合执行意向代码。常规的远程线程注入技术都是在获取宿主进程PID后,获取待注入DLL完整路径,将其写入宿主进程内存后,利用CreateRemoteThread函数创建远程线程,LoadLibraryA/LoadLibraryW函数作为远程线程启动的入口函数,注入结束后,调用VirtualFreeEx函数释放先前申请的内存。CreateRemoteThread虽可以轻松地创建远程线程,但经过实际的开发测试发现这种注入方法极其不稳定,对64 bit操作系统及win7以上版本操作系统都不能很好支持,利用该技术实现的应用程序其跨平台性及实用性都将面临着极大的挑战。
动态链接库与远程线程注入技术初识
最新推荐文章于 2020-10-26 18:15:25 发布