錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務,錦州廣廈維修電腦,公司IT外包服務
topFlag1 設為首頁
topFlag3 收藏本站
 
maojin003 首 頁 公司介紹 服務項目 服務報價 維修流程 IT外包服務 服務器維護 技術文章 常見故障
錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務技術文章
通過消息斷點,確定按鈕的單擊事件

作者: springwillow  日期:2017-05-06 19:57:42   來源: 本站整理

 通過消息斷點,確定按鈕的單擊事件。
簡單的小程序如下:
 
注冊名密碼正確會彈出正確的對話框,錯誤會彈出錯誤的對話框。
首先來看一下源碼:

[C++] 純文本查看 復制代碼
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("密碼錯誤"),TEXT("錯誤"),MB_OK);
                                                }
                                        }
                                        else
                                                MessageBox(NULL,TEXT("用戶名密碼不能為空"),TEXT("錯誤"),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是基于消息驅動的,我們就是要通過攔截消息來確定按鈕的事件,通過上面的源碼我們可以看出,鼠標左鍵的消息是通過WM_COMMAND消息傳遞的,而WM_COMMAND宏對應的十六進制為0x0111。
打開OD載入,F9跑起來,點開W窗口,如下圖:
 
找到確定按鈕右鍵
 
選擇消息斷點,彈出如下界面
 
選擇WM_LBUTTONUP.確定。切換到程序窗口界面隨便輸入用戶名和密碼,點確定。
 
我們會斷到下面的位置
 
點擊m模塊
 
在代碼段下斷點
 
F9跑起來,來到這里斷下了
 
下面是關鍵的地方了,我們來看ESP寄存器和堆棧,畫過堆棧圖的人都應該知道,現在ESP所指的是函數返回的地址,[ESP+4]為DialogProc的第一個參數,即對話框的句柄,[ESP+8]是第二個參數即消息類型uMsg,只有uMsg為WM_COMMAND,即為0x0111的時候才是我們要攔截的消息,所以我們在這下條件斷點。
 
 
下好斷點后,我們再讓程序跑起來。被斷下來的我們看esp+8的位置是不是0x0111。
 
這個就是我們要跟蹤的按鈕事件了。好我了我們單步跟蹤,我們一直跟到這個地方,就是關鍵跳了,直接nop掉就搞定了。
 



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

    報修電話:13840665804  QQ:174984393 (聯系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號:遼ICP備2023002984號-1
    上門服務區域: 遼寧錦州市區
    主要業務: 修電腦,電腦修理,電腦維護,上門維修電腦,黑屏藍屏死機故障排除,無線上網設置,IT服務外包,局域網組建,ADSL共享上網,路由器設置,數據恢復,密碼破解,光盤刻錄制作等服務

    技術支持:微軟等
    主站蜘蛛池模板: 亚洲AV色吊丝无码| 中文字幕无码不卡一区二区三区| 久久午夜夜伦鲁鲁片免费无码| 午夜无码人妻av大片色欲| 亚洲日韩精品无码一区二区三区| 午夜无码国产理论在线| 无码无套少妇毛多18PXXXX| 狠狠噜天天噜日日噜无码| 无码毛片内射白浆视频| 日韩精品无码熟人妻视频| 亚洲日韩精品无码专区网站| AV无码人妻中文字幕| 亚洲无码在线播放| 国产网红主播无码精品| 亚洲午夜无码久久久久软件| 久久老子午夜精品无码怎么打| 亚洲Av无码乱码在线播放| 亚洲AV无码国产精品永久一区| 无码人妻AⅤ一区二区三区| 一级电影在线播放无码| 日韩av无码成人无码免费| 亚洲中文无码mv| 中文字幕无码不卡免费视频 | 无码H肉动漫在线观看| 国产精品毛片无码| 曰韩无码二三区中文字幕| 亚洲精品无码av片| 精品少妇人妻AV无码专区不卡| 日韩国产精品无码一区二区三区 | 国产精品无码一区二区三区不卡 | 亚洲AV无码精品国产成人| 国产成人无码AV麻豆| 97碰碰碰人妻视频无码| 亚洲精品无码久久久久APP | 精品无码久久久久国产动漫3d| 午夜人性色福利无码视频在线观看| 亚洲欧洲日产国码无码网站| 亚洲av无码国产精品色午夜字幕 | 亚洲熟妇无码八AV在线播放| 中文字幕精品无码一区二区| 亚洲欧洲无码AV电影在线观看|