1、实现SendMsg程序将输入的数据发送给ReceiveMsg程序的过程。效果见图1,源代码见http://download.csdn.net/source/3091018。
图1 两个程序通信
发送方(SendMsg)主要使用::SendMessage()函数,使用该函数需要将接受函数的句柄,发送给接受程序的消息,以及发送内容的地址做为参数。关键代码如下
接收方(ReceiveMsg)判断获得WM_SETTEXT消息后做出处理即可。由于MFC没有内置添加WM_SETTEXT消息的wizard,需要自己手动添加该消息,还要注意消息响应函数的形参。在对话框程序xxx中添加消息的步骤如下:
(1)在xxxDlg.h中添加消息响应函数的声明 afx_msg void OnSetText(WPARAM wParam, LPARAM lParam);
(2)在xxxDlg.cpp的消息映射表中添加消息映射 ON_MESSAGE(WM_SETTEXT,OnSetText)
(3)在xxxDlg.cpp中实现消息响应函数OnSetText(WPARAM wParam, LPARAM lParam);
注意,WM_SETTEXT消息为系统消息,所以不需要定义。若要自己定义消息,需要#define一下,详见参考[1]
2、利用OD反汇编观察FindWindow()函数,SendMessage()函数和MessageBox()函数的实现过程,便于代码注入时使用
注意,调用函数时具体地址会不同,可以用IDA来查看,或直接写OD能识别的函数名(eg: MessageBoxA),可以先写一个小程序反汇编看看OD本身能识别的函数名是什么样的.......
参考
[1] http://blog.csdn.net/machaoboy/archive/2009/01/04/3706991.aspx