预备知识
windows消息钩取
钩子顾名思义就是钩取消息的钩子,例如:windows消息钩取就像古代传递消息的士兵,被截获消息被敌人截取查看或修改后继续传递。
windows消息流
举个例子:键盘消息:用户从键盘上输入消息WM_KEYDOWN,os系统接收到后将消息放到 操作系统消息队列中,操作系统判断哪个应用程序中发生了事件,将操作系统消息队列中的键盘上输入消息WM_KEYDOWN放到应用程序消息队列中,应用程序例如记事本监控自己的消息队列,发现自己的消息队列中新增加了WM_KEYDOWN消息后,调用事件处理消息。
DLL注入
含义:向正在
技术细节:DLL命令其他的进程执行loadlibrary()加载指定的DLL。
代码注入
代码注入又称线程注入。利用createRemoteThread()函数以远程线程形式运行代码。必须将代码和数据同时注入(数据以参数的形式注入)。
DLL注入和代码注入的比较
代码注入:
占用内存少:
如果注入的代码和数据较少,就不用做成DLL形式注入。和DLL的注入方式取的效果相同,且占用内存少。
难以查询痕迹:
采用代码注入的方式不会留下任何痕迹(当然也有一些方法可以检测),而DLL注入会在目标程序的内存中留下相关痕迹,很容易让人判断出来目标进程是否被执行过注入操作。
代码注入需求少
代码注入不需要另外的DLL文件,只需要少量代码。
简单总结
DLL注入技术主要用于代码量大且复杂的时候,而代码注入则适用豫代码量小且简单的情况。