dll注入拦截send后如何找到报文

weixin_44979836 2019-08-14 10:32:15
DLL远程注入拦截了WS2_32.dll的send和recv,recv拦截正常,但send只有报头,
我按报头长度往后输出都是空值是怎么回事?

BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
{
obj_HookAPI_Send.Init("WS2_32.dll", "send", "MySend");
Inject_Send(&obj_HookAPI_Send);
obj_HookAPI_Recv.Init("WS2_32.dll", "recv", "MyRecv");
Inject_Recv(&obj_HookAPI_Recv);
//obj_HookAPI_RecvFrom.Init("Ws2_32.dll", "WSARecv", "MyWSARecv");
//Inject_RecvFrom(&obj_HookAPI_RecvFrom);
}
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}


//拦截send处理函数
int WINAPI MySend(SOCKET s, const char FAR *buf, int len, int flags)
{


int ret = 0;
//下面这段就是通过WM_COPYDATA传递消息的方法,
//将一些sendto()的数据通过字符串方式传递给
//名为”XsockSpy”的窗体。
//XsockSpy窗体只需要响应对WM_COPYDATA的处理和显示就OK了,很简单。


string strPost = "";
strPost = strPost + (char)buf[0];
strPost = strPost + (char)buf[1];
strPost = strPost + (char)buf[2];
strPost = strPost + (char)buf[3];
string strGet = "";
strGet = strGet + (char)buf[0];
strGet = strGet + (char)buf[1];
strGet = strGet + (char)buf[2];

if (strPost == "POST")
{
for (int i = 0; i < len + 2 + 932; i++)
{
WX_DebugInfo::Debug_Info((char)buf[i]);
}
WX_DebugInfo::Debug_Info("发送Post数据:");
WX_DebugInfo::Debug_Info("数据包大小:", len);
WX_DebugInfo::Debug_Info(buf, len, 'p');
strPost.clear();
}
else if (strGet == "GET")
{
WX_DebugInfo::Debug_Info("发送Get数据:");
WX_DebugInfo::Debug_Info("数据包大小:", len);
WX_DebugInfo::Debug_Info(buf, len, 'p');
strPost.clear();
}
HookOff(&obj_HookAPI_Send);//关钩子
ret = send(s, buf, len, flags);
HookOn(&obj_HookAPI_Send);
//wchar_t* cbuf = new wchar_t[len];
//MultiByteToWideChar(CP_ACP, 0, buf, len + 1, LPWSTR(cbuf), len + 1);

//调用真正的sendto()函数
if (ret == SOCKET_ERROR)
{
WX_DebugInfo::Debug_Info(GetLastError());
}
//开钩子

return ret;
}
...全文
131 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gouyanfen 2019-08-15
  • 打赏
  • 举报
回复
引用 1 楼 菓菓爸 的回复:
顶啊,懂得联系我,谢谢!
我的ID@126.com
菓菓爸 2019-08-15
  • 打赏
  • 举报
回复
顶啊,懂得联系我,谢谢!
菓菓爸 2019-08-15
  • 打赏
  • 举报
回复
引用 2 楼 gouyanfen 的回复:
我的ID@126.com

已经发送邮件,请加我!

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧