| 发表于:2007-06-01 14:43:23 楼主 |
近期在做一个防范网络攻击iis服务器的系统,设想是先利用hook技术钩住iis服务器的wsarecv,recv接受数据的函数,用自己的监测函数对接收的数据进行检测处理后,返回正常的wsarecv,recv处理。现在已经可以获取服务器接收的数据. 现在出现的问题是:即使钩子函数不返回服务器wsarecv,recv处理,网站照样可以被访问。 这个过程中用到了detour工具。 函数框架如下: 钩iis的recv函数: bool apientry dllmain( hmodule hmodule, dword dwreason, lpvoid lpreserved ) { ............... detourattach(&(pvoid&)truerecvfrom, myrecvfrom); detourattach(&(pvoid&)truewsarecv, mywsarecv); ...................} 插入的钩子函数: int winapi mywsarecv(socket s,lpwsabuf lpbuffers,dword dwbuffercount,lpdword lpnumberofbytesrecvd,lpdword lpflags,lpwsaoverlapped lpoverlapped,lpwsaoverlapped_completion_routine lpcompletionroutine) { .......... ............ int h = truewsarecv(s, lpbuffers, dwbuffercount, lpnumberofbytesrecvd, lpflags, lpoverlapped, lpcompletionroutine); ////// .........对数据进行检测的函数............ return h; } 现在已经可以将iis服务器接收的数据拿到,问题就出现在:即使不执行int h = truewsarecv(),网站同样可以被访问。 请问是什么原因? hook技术可以将iis服务器接收的数据完全阻断吗?即可以阻断对服务器的访问吗/? |
|
|
|
|