錦州市廣廈電腦維修|上門(mén)維修電腦|上門(mén)做系統(tǒng)|0416-3905144熱誠(chéng)服務(wù),錦州廣廈維修電腦,公司IT外包服務(wù)
topFlag1 設(shè)為首頁(yè)
topFlag3 收藏本站
 
maojin003 首 頁(yè) 公司介紹 服務(wù)項(xiàng)目 服務(wù)報(bào)價(jià) 維修流程 IT外包服務(wù) 服務(wù)器維護(hù) 技術(shù)文章 常見(jiàn)故障
錦州市廣廈電腦維修|上門(mén)維修電腦|上門(mén)做系統(tǒng)|0416-3905144熱誠(chéng)服務(wù)技術(shù)文章
通過(guò)消息斷點(diǎn),確定按鈕的單擊事件

作者: springwillow  日期:2017-05-06 19:57:42   來(lái)源: 本站整理

 通過(guò)消息斷點(diǎn),確定按鈕的單擊事件。
簡(jiǎn)單的小程序如下:
 
注冊(cè)名密碼正確會(huì)彈出正確的對(duì)話(huà)框,錯(cuò)誤會(huì)彈出錯(cuò)誤的對(duì)話(huà)框。
首先來(lái)看一下源碼:

[C++] 純文本查看 復(fù)制代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include "stdafx.h"
#include "resource.h"
BOOL CALLBACK DialogProc(
  HWND hwndDlg,  // handle to dialog box
  UINT uMsg,     // message
  WPARAM wParam, // first message parameter
  LPARAM lParam  // second message parameter
)
{
        HWND hEditUser=NULL;
        HWND hEditPass=NULL;
        switch(uMsg)
        {
        case WM_COMMAND:
                {
                        switch(LOWORD(wParam))
                        {
                        case IDOK:
                                {
                                        TCHAR szUserBuffer[0x50];
                                        TCHAR szPassBuffer[0x50];
                                        hEditUser=GetDlgItem(hwndDlg,IDC_EDIT_UserName);
                                        hEditPass=GetDlgItem(hwndDlg,IDC_EDIT_PassWord);
                                        GetWindowText(hEditUser,szUserBuffer,0x50);
                                        GetWindowText(hEditPass,szPassBuffer,0x50);
                                        if ((strcmp(szUserBuffer,"") !=NULL)&&(strcmp("",szPassBuffer) !=NULL))
                                        {
                                                if (strcmp(strcat(szUserBuffer,TEXT("abc")),szPassBuffer) ==NULL)
                                                {
                                                        MessageBox(NULL,TEXT("恭喜密碼正確"),TEXT("正確"),MB_OK);
                                                }
                                                else
                                                {
                                                        MessageBox(NULL,TEXT("密碼錯(cuò)誤"),TEXT("錯(cuò)誤"),MB_OK);
                                                }
                                        }
                                        else
                                                MessageBox(NULL,TEXT("用戶(hù)名密碼不能為空"),TEXT("錯(cuò)誤"),MB_OK);
                                        return true;
                                }
                        case IDCANCEL:
                                {
//                                        MessageBox(NULL,TEXT("IDC_Button_CANCEL"),TEXT("取消"),MB_OKCANCEL);
                                        DestroyWindow(hwndDlg);
                                        return false;
                                }
                        }
                }
        }
        return false;
}
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
         // TODO: Place code here.
        DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DialogProc);
        return 0;
}


Windows是基于消息驅(qū)動(dòng)的,我們就是要通過(guò)攔截消息來(lái)確定按鈕的事件,通過(guò)上面的源碼我們可以看出,鼠標(biāo)左鍵的消息是通過(guò)WM_COMMAND消息傳遞的,而WM_COMMAND宏對(duì)應(yīng)的十六進(jìn)制為0x0111。
打開(kāi)OD載入,F(xiàn)9跑起來(lái),點(diǎn)開(kāi)W窗口,如下圖:
 
找到確定按鈕右鍵
 
選擇消息斷點(diǎn),彈出如下界面
 
選擇WM_LBUTTONUP.確定。切換到程序窗口界面隨便輸入用戶(hù)名和密碼,點(diǎn)確定。
 
我們會(huì)斷到下面的位置
 
點(diǎn)擊m模塊
 
在代碼段下斷點(diǎn)
 
F9跑起來(lái),來(lái)到這里斷下了
 
下面是關(guān)鍵的地方了,我們來(lái)看ESP寄存器和堆棧,畫(huà)過(guò)堆棧圖的人都應(yīng)該知道,現(xiàn)在ESP所指的是函數(shù)返回的地址,[ESP+4]為DialogProc的第一個(gè)參數(shù),即對(duì)話(huà)框的句柄,[ESP+8]是第二個(gè)參數(shù)即消息類(lèi)型uMsg,只有uMsg為WM_COMMAND,即為0x0111的時(shí)候才是我們要攔截的消息,所以我們?cè)谶@下條件斷點(diǎn)。
 
 
下好斷點(diǎn)后,我們?cè)僮尦绦蚺芷饋?lái)。被斷下來(lái)的我們看esp+8的位置是不是0x0111。
 
這個(gè)就是我們要跟蹤的按鈕事件了。好我了我們單步跟蹤,我們一直跟到這個(gè)地方,就是關(guān)鍵跳了,直接nop掉就搞定了。
 



熱門(mén)文章
  • 機(jī)械革命S1 PRO-02 開(kāi)機(jī)不顯示 黑...
  • 聯(lián)想ThinkPad NM-C641上電掉電點(diǎn)不...
  • 三星一體激光打印機(jī)SCX-4521F維修...
  • 通過(guò)串口命令查看EMMC擦寫(xiě)次數(shù)和判...
  • IIS 8 開(kāi)啟 GZIP壓縮來(lái)減少網(wǎng)絡(luò)請(qǐng)求...
  • 索尼kd-49x7500e背光一半暗且閃爍 ...
  • 樓宇對(duì)講門(mén)禁讀卡異常維修,讀卡芯...
  • 新款海信電視機(jī)始終停留在開(kāi)機(jī)界面...
  • 常見(jiàn)打印機(jī)清零步驟
  • 安裝驅(qū)動(dòng)時(shí)提示不包含數(shù)字簽名的解...
  • 共享打印機(jī)需要密碼的解決方法
  • 圖解Windows 7系統(tǒng)快速共享打印機(jī)的...
  • 錦州廣廈電腦上門(mén)維修

    報(bào)修電話(huà):13840665804  QQ:174984393 (聯(lián)系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號(hào):遼ICP備2023002984號(hào)-1
    上門(mén)服務(wù)區(qū)域: 遼寧錦州市區(qū)
    主要業(yè)務(wù): 修電腦,電腦修理,電腦維護(hù),上門(mén)維修電腦,黑屏藍(lán)屏死機(jī)故障排除,無(wú)線(xiàn)上網(wǎng)設(shè)置,IT服務(wù)外包,局域網(wǎng)組建,ADSL共享上網(wǎng),路由器設(shè)置,數(shù)據(jù)恢復(fù),密碼破解,光盤(pán)刻錄制作等服務(wù)

    技術(shù)支持:微軟等
    主站蜘蛛池模板: 免费无遮挡无码视频网站| 久久亚洲AV成人无码| 亚洲AV日韩AV永久无码久久 | 精品无码一级毛片免费视频观看 | 夜夜添无码试看一区二区三区| 潮喷失禁大喷水aⅴ无码| 中文无码字慕在线观看| 日韩av无码免费播放 | 亚洲精品无码久久不卡| 亚洲av成人无码久久精品| 在线无码视频观看草草视频| 亚洲AV无码欧洲AV无码网站| 无码人妻少妇久久中文字幕| 久久精品aⅴ无码中文字字幕不卡| 精品人妻无码专区中文字幕| 亚洲国产精品无码中文lv| 人妻中文字幕无码专区| 精品无码国产污污污免费网站国产| 中文字幕无码视频手机免费看| 亚洲精品无码专区久久久 | 大胆日本无码裸体日本动漫| 日韩精品无码一区二区三区不卡 | 亚洲国产成人精品无码区在线秒播 | 白嫩少妇激情无码| 暴力强奷在线播放无码| 国产成人无码精品久久二区三区| 亚洲中文字幕无码中文| 亚洲国产日产无码精品 | AV无码精品一区二区三区| 久久Av无码精品人妻系列| 亚洲AV无码码潮喷在线观看| 成人午夜亚洲精品无码网站| 熟妇人妻中文av无码| 久久久久亚洲AV无码专区网站| 无码国产亚洲日韩国精品视频一区二区三区| 无码国产福利av私拍 | 亚洲中文字幕无码mv| 亚洲AV无码专区国产乱码不卡| 亚洲av中文无码字幕色不卡| 无码人妻丰满熟妇区毛片18| 精品少妇人妻AV无码专区不卡|