什么是DLL注入?
dll注入是一种将Windows动态链接库注入到目标进程中的技术,具体的说,就是将dll文件加载到一个进程的虚拟地址空间中。对某个进程进行dll注入,也就意味着dll模块与该进程共用一个进程空间,则这个dll文件就有了操纵这个进程空间的能力,以达到执行dll模块中的代码修改进程数据的能力。dll注入技术在逆向工程,病毒,外挂,调试等技术领域都有广泛的应用,它也是Windows API hook技术的基础。
改善功能与修复Bug改善功能与修复Bug?
DLL注入技术可用于改善功能与修复Bug。没有程序对应的源码,或直接修改程序比较困难 时,就可以使用DLL注入技术为程序添加新功能(类似于插件),或者修改有问题的代码、数据。
消息钩取?
Windows OS默认提供的消息钩取功能应用的就是一种DLL注入技术。与常规的DLL注入唯 一的区别是,OS会直接将已注册的钩取DLL注入目标进程。
?API 钩取
API钩取广泛应用于实际的项目开发,而进行API钩取时经常使用DLL注入技术。先创建好 DLL形态的钩取函数,再将其轻松注入要钩取的目标进程,这样就完成了API钩取。这灵活运用 了 “被注入的DLL拥有目标进程内存访问权限”这一特性。?
其他应用程序?
?DLL注入技术也应用于监视、管理PC用户的应用程序。比如,用来阻止特定程序(像游戏、 股票交易等)运行、禁止访问有害网站,以及监视PC的使用等。管理员(或者父母)主要安装 这类拦截/阻断应用程序来管理/监视。受管理/监视的一方当然千方百计地想关闭这些监视程序, 但由于这些监视程序采用DLL注入技术,它们可以隐藏在正常进程中运行,所以管理员一般不用 担心被发现或被终止(若用户强制终止Windows系统进程,也会一并关闭系统,最后也算达成了 拦截/阻断这一目标)。
恶意代码?
恶意代码制作者们是不会置这么好的技术于不顾的,他们积极地把DLL注入技术运用到自己 制作的恶意代码中。这些人把自己编写的恶意代码隐藏到正常进程(winlogon.exe、services.exe、 svchost.exe, explorer.exe等),打开后门端口 ( Backdoor port),尝试从外部连接,或通过键盘偷 录(Keylogging )功能将用户的个人信息盗走。只有了解恶意代码制作者们使用的手法,才能拿 出相应对策。
DLL注入的实现方法
向某个进程注入DLL时主要使用以下三种方法:
DLL注入方法
□创建远程线程(CreateRemoteThread。API)
□使用注册表(AppInit DLLs值)
□消息钩取(SetWindowsHookEx。API)
创建远程线程(CreateRemoteThread)
使用InjectDll.exe在notepad.exe中注入Myhack.dll(winxp提权后测试成功)
准备好InjectDll.exe和Myhack.dll的代码
打开记事本(只需要打开,不用在里面做任何事情)
从任务管理器查看记事本的PID
?
打开cmd(win10的版本要用管理员模式,文件要直接放在盘里,不能有文件夹)
最后就会得到一个
|