能力值:
( LV2,RANK:10 )
2 楼
都一天了,咋了?
能力值:
(RANK:350 )
3 楼
拦不到,说明不是这个消息循环。
你用IDA反一下,找到相关的消息循环,再用OD配合。
能力值:
( LV2,RANK:10 )
4 楼
我确定我找对了,因为我把CMP EAX,102改成CMP EAX,120
120是左键单击的消息ID。
这个就拦截到了。
我后来又考虑发是不是没焦点的问题,发现也不是
能力值:
( LV2,RANK:10 )
5 楼
要不坛主你可以给LORDPE的主界面加个ESC事件看下》?
能力值:
(RANK:350 )
6 楼
00404A88 > \8B45 10 mov eax, dword ptr [ebp+10] ; Case 111 (WM_COMMAND) of switch 004047F9
00404A8B . 25 FFFF0000 and eax, 0FFFF
00404A90 . 3D 01300000 cmp eax, 3001 ; Switch (cases 3EB..5005)
设断,你再按ESC看看。同时单击EXIT按钮看看。剩下的代码你补齐,问题就解决了。
没经过太多分析,仅供参考。
能力值:
( LV2,RANK:10 )
7 楼
断下了,原来按键消息是在COMMAND消息响应之后再细分的?
能力值:
( LV2,RANK:10 )
8 楼
本来以为是说拦截键盘按键,然后判断是不是按下ESC。这个思路来搞。。
可是思路估计不是这样了,上面那里断点后,一些字母的按下没响应。
不知道坛主科普下还是我可以到《深入浅出MFC》找答案
能力值:
( LV2,RANK:10 )
9 楼
有点想不太明白,我在用SDK写程序的时候,
在主窗口消息循环不是可以
CASE CREATE:
CASE WM_COMMAND
CASE WM_CHAR
这样的形式吗?为什么我的按键消息却跑到WM_COMMAND去了
能力值:
( LV2,RANK:10 )
10 楼
发现是焦点问题。。。主窗口中直接添加wm_char消息响应不到
能力值:
(RANK:350 )
11 楼
没有细看,碰巧那个地方能拦截ESC。你有时间可以多研究一下其机制原理。记得分享一下。
能力值:
( LV2,RANK:10 )
12 楼
呵呵,确实是有点碰巧吧。由于是MFC封闭的原因吧。
新建一个MFC程序,添加wm_char的话,拦截不到的。需要重载下下面这个函数
BOOL CMessageDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if ( pMsg->message == WM_KEYDOWN ||pMsg->message == WM_CHAR)
{
// if (::GetDlgCtrlID(pMsg->hwnd)==IDOK)
{
//有些人直接在里pMsg->hwnd=this->h_Wnd,不要下面的sendmessage的话
//这样应该有些问题,如果对话框中有编辑框的话,会接收不到你的输入了
SendMessage(pMsg->message, pMsg->wParam, pMsg->lParam);
//这样send多一次给父窗口,忘记消息机制怎么说来着。不知道这里send一次,下面调用的基类的又一次,会不会父窗口会一个消息接两次潜在错误呢?测试的时候没啥发现
}
}
return CDialog::PreTranslateMessage(pMsg);
}
///边学开发边学逆向咯。。。。不会开发就学逆向根本不会有质的突破