|
|
1.想获取客户端接受的数据,是hook recv()函数好,还是改写wsock32.dll好?还是其他方法?
2.如何改写recv()函数?
下面的如何?
(本人的动态链接库的一个函数)
int _stdcall hook_recv( SOCKET s, char *buf, int len, int flags )
{
int nRet;
WaitForSingleObject( g_hRecvEvent, INFINITE );//有信号状态返回WAIT_OBJECT_0
//恢复API头8个字节,INVALID_HANDLE_VALUE,值为-1
WriteProcessMemory( INVALID_HANDLE_VALUE, ( void* )g_pRecv,
( void* )g_dwOldBytR[0], sizeof( DWORD )*2, NULL );
//真正执行API函数
nRet = recv( s, buf, len, flags );
recvbuf = buf;//char* recvbuf为动态连接库的一个全局变量,为了获取buf
//写入跳转语句,继续Hook
WriteProcessMemory( INVALID_HANDLE_VALUE, ( void* )g_pRecv,
( void* )g_btNewBytR, sizeof( DWORD )*2, NULL );
SetEvent( g_hRecvEvent ); //设置为有信号
return nRet;
}
然后写一个输出函数 return recvbuf;
如何?谢谢先
|
|