比如对 send 函数进行HOOK的,我是这样写的:(这个函数没有替换任何东西)int WINAPI mysend(SOCKET s, char *buf, int len, int flags)
{
int ret;
ret =send(s, (char *)buf, len, flags);
return ret;
}
如果替换 buf 这个参数,
只要客户端应用程序调用send的时候,不论发送什么数据,服务端收到的都是 "Hello World"int WINAPI mysend(SOCKET s, char *buf, int len, int flags)
{
char *buf1 = "Hello World";
int ret;
ret =send(s, (char *)buf1, len, flags);
return ret;
}现在我要HOOK WSASend这个函数,内部参数总是填错
用 "?" 表示的参数,就是我不知道如何填写的
先不替换参数,请大家帮忙看看应该怎么填int WINAPI myWSASend(SOCKET s,
LPWSABUF lpBuffers,
DWORD dwBufferCount,
LPDWORD lpNumberOfBytesSent,
DWORD dwFlags,
LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
int ret;
ret =WSASend(s,
?, //直接填 lpBuffers 会编译出错,下面的类同
dwBufferCount,
?,
dwFlags,
?,
?,);
return ret;
}
{
int ret;
ret =send(s, (char *)buf, len, flags);
return ret;
}
如果替换 buf 这个参数,
只要客户端应用程序调用send的时候,不论发送什么数据,服务端收到的都是 "Hello World"int WINAPI mysend(SOCKET s, char *buf, int len, int flags)
{
char *buf1 = "Hello World";
int ret;
ret =send(s, (char *)buf1, len, flags);
return ret;
}现在我要HOOK WSASend这个函数,内部参数总是填错
用 "?" 表示的参数,就是我不知道如何填写的
先不替换参数,请大家帮忙看看应该怎么填int WINAPI myWSASend(SOCKET s,
LPWSABUF lpBuffers,
DWORD dwBufferCount,
LPDWORD lpNumberOfBytesSent,
DWORD dwFlags,
LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
int ret;
ret =WSASend(s,
?, //直接填 lpBuffers 会编译出错,下面的类同
dwBufferCount,
?,
dwFlags,
?,
?,);
return ret;
}
如果函数内部所填的参数,和形参一样的话,
ret =WSASend(s,
lpBuffers,
dwBufferCount,
lpNumberOfBytesSent,
dwFlags,
lpOverlapped,
lpCompletionRoutine);编译就会出现以下错误提示(mydll.dll是正在修改的工程)
Mydll.obj : error LNK2019: 无法解析的外部符号 __imp__WSASend@28 ,该符号在函数 "int __stdcall myWSASend(unsigned int,struct _WSABUF *,unsigned long,unsigned long *,unsigned long,struct _OVERLAPPED *,void (__stdcall*)(unsigned long,unsigned long,struct _OVERLAPPED *,unsigned long))" (?myWSASend@@YGHIPAU_WSABUF@@KPAKKPAU_OVERLAPPED@@P6GXKK2K@Z@Z) 中被引用..\mydll.dll : fatal error LNK1120: 1 个无法解析的外部命令
#pragma comment(lib,"ws2_32.lib")
这样就没有这个:“fatal error LNK1120: 1 个无法解析的外部命令”bug了~~`