关于注入后,消息截取的问题。(注入后SetWindowLongPtr)

wyplyxj 2014-02-08 03:51:26
最近再写一个工具。

思路如下:
讲DLL注入到目标进程,然后调用SetWindowLongPtr()修改工程函数。。
我注入的是MFC的DLL。

问题:
能监控到WM_COMMAND消息。但是不能监控到WM_KEYDOWND 消息。

起初怀疑是被注入后,显示的窗口 截取了。。但是重载了,PreTranslateMessage()发现并没有接受到。。 因为PreTranslateMessage 是所有消息都要先经过这里,再经过消息循环。


希望各位网友指点下,下面贴出DLL里面的代码:

//消息过程函数
LRESULT CALLBACK MyWindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
CString strMsg;
strMsg.Format("监视到的消息: %x",uMsg);
OutputDebugStringA(strMsg);
if (uMsg == WM_KEYDOWN)
{
OutputDebugStringA("响应了 WM_KEYDOWN 消息");
}
return CallWindowProc(g_OldProc,hwnd,uMsg,wParam,lParam);
}

//下面开始读取共享内存中的数据.
HANDLE hfileMap = OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,"MyMemory");
if (hfileMap == NULL)
{
::MessageBox(NULL,"打开共享内存失败.",NULL,NULL);
}
LPVOID pShareMem = ::MapViewOfFile(hfileMap,
FILE_MAP_ALL_ACCESS,
0,
0,
0);

//获取窗口句柄.
CString str = (char*)pShareMem;

HWND hCalc = (HWND)atoi(str.GetBuffer(str.GetLength()));
//::MessageBox(NULL,str,NULL,NULL);

//修改窗口过程函数.
g_OldProc = (WNDPROC)::SetWindowLongPtr(hCalc,
GWLP_WNDPROC,
(LONG)MyWindowProc);

if (g_OldProc == 0)
{
::MessageBox(NULL, "修改过程函数失败", NULL, MB_OK);
}
...全文
239 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2014-02-08
  • 打赏
  • 举报
回复
atoi 截断了指针, 用 atoi64 试试看
wyplyxj 2014-02-08
  • 打赏
  • 举报
回复
真心搞不懂了。。 同样的代码 在XP下 正常 换到 64位下就出错。。我晕死。
Windows API 一日一练(1)第一个应用程序 ---------------------------------------------------------------3 Windows API 一日一练(2)使用应用程序句柄------------------------------------------------------------4 Windows API 一日一练(3)使用命令行参数 ---------------------------------------------------------------6 Windows API 一日一练(4)MessageBox函数--------------------------------------------------------9 Windows API 一日一练(5)RegisterClass 和 RegisterClassEx 函数---------------11 Windows API 一日一练(6)CreateWindow 函数 -------------------------------------------------14 Windows API 一日一练(7)ShowWindow 函数 ---------------------------------------------------17 1 Windows API 一日一练(8)UpdateWindow 函数------------------------------------------------18 Windows API 一日一练(9)WindowProc 和 DefWindowProc 函数-----------------20 Windows API 一日一练(10)LoadAccelerators 函数------------------------------------------22 Windows API 一日一练(11)GetMessage 函数----------------------------------------------------24 Windows API 一日一练(12)TranslateAccelerator 函数-----------------------------------26 Windows API 一日一练(13)TranslateMessage 函数----------------------------------------28 Windows API 一日一练(14)DispatchMessage 函数------------------------------------------30 Windows API 一日一练(15)PostQuitMessage 函数------------------------------------------32 Windows API 一日一练(16)BeginPaint 和 EndPaint 函数 -------------------------------34 Windows API 一日一练(17)DialogBox 和 DialogBoxParam 函数------------------36 Windows API 一日一练(18)EndDialog 函数--------------------------------------------------------39 Windows API 一日一练(19)DestroyWindow 函数 --------------------------------------------40 Windows API 一日一练(20)LoadString、LoadIcon 和 LoadCursor 函数-----42 Windows API一日一练(21)SetWindowLongPtr 和 GetWindowLongPtr 函数

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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