[Re] 安全知识点
DLL注入,即,把一个DLL文件放到目标进程中。
当一个进程的程序不是自己编写的,而我们又需要该程序加载指定的dll,以便进行某些操作,这是就需要dll注入。
当一个进程加载dll时,dll被映射到该进程的地址空间。dll注入的最大目的,进入目标进程的地址空间,这样就可以操作目标进程中的对象了。
注入方式:
1.远程线程注入步骤(假设事先写好DLL文件)
OpenProcess() //获取已知进程的句柄;
VirtualAllocEx() //在进程中申请空间;
WriteProcessMemory() //向进程中写入东西;
GetProcAddress() (LoadLibrary())//取得函数在DLL中的地址,动态加载DLL;前为UNICODE版本
CreateRemoteThread() //在目标进程中创建远程线程;
CloseHandle() //关闭句柄;
2.利用hook注入。
Hook技术是基于windows消息机制的。如果 给某个消息安装了Hook,当该消息发生时,会先调用Hook函数。
1.进程B中的一个线程准备向一个窗口post一条消息。
2.系统检查该线程是否已经安装了WH_GETMESSAGE Hook,检查结果为确实安装了这种Hook。
3.进程B准备调用Hook函数,即GetMsgProc函数。但是该函数在MyDll.dll中,而MyDll.dll并没有加载到进程B。
4. 进程B加载MyDll.dll。
5.调用GetMsgProc函数
Minds overflow