零基础逆向工程30_Win32_04_资源文件_消息断点

1 资源文件,创建对话框
详细步骤:

1、创建一个空的Win32应用程序

2、在VC6中新增资源
File ->  New  -> Resource Script
创建成功后会新增2个文件:xxx.rc 和 resource.h

3、打开新创建的xxx.rc文件,在资源窗口新增一个对话框,并在对话框上新增2个按钮.

4、打开resource.h文件,观察变化:
#define IDD_DIALOG_MAIN                 101
#define IDC_BUTTON_OK                   1000
#define IDC_BUTTON_OUT                  1001

5、通过DialogBox创建对话框


INT_PTR DialogBox(
  HINSTANCE hInstance,  // handle to module
  LPCTSTR lpTemplate,   // dialog box template
  HWND hWndParent,      // handle to owner window
  DLGPROC lpDialogFunc  // dialog box procedure
);
//----参考MSDN

6、定义Dialog消息处理函数

BOOL CALLBACK DialogProc(
                         HWND hwndDlg,  // handle to dialog box
                         UINT uMsg,     // message
                         WPARAM wParam, // first message parameter
                         LPARAM lParam  // second message parameter
                         )
{

    switch(uMsg)
    {
    case  WM_INITDIALOG :

        MessageBox(NULL,TEXT("WM_INITDIALOG"),TEXT("INIT"),MB_OK);

        return TRUE ;

    case  WM_COMMAND :

        switch (LOWORD (wParam))
        {
        case   IDC_BUTTON_OK :

            MessageBox(NULL,TEXT("IDC_BUTTON_OK"),TEXT("OK"),MB_OK);

            return TRUE;

        case   IDC_BUTTON_OUT:

            MessageBox(NULL,TEXT("IDC_BUTTON_OUT"),TEXT("OUT"),MB_OK);

            EndDialog(hwndDlg, 0);

            return TRUE;
        }
        break ;
    }

    return FALSE ;
}

说明:

1、处理过的消息,返回TRUE

2、不处理的消息,返回FALSE

2 按钮、文本框的使用

1、获取文本框句柄:
HWND hEditUser = GetDlgItem(hDlg,IDC_EDIT_USER);    
hDlg    //对话框句柄
IDC_EDIT_USER   //编号
    
2、获取文本框内容   
TCHAR szUserBuff[0x50]; 
GetWindowText(hEditUser,szUserBuff,0x50);   
hEditUser   //文本框句柄
szUserBuff  //输出缓冲区

3 为项目添加图标

1、加载图标      
HICON hIcon;        
hIcon = LoadIcon (hAppInstance, MAKEINTRESOURCE (IDI_ICON));        
hAppInstance    //应用程序句柄    
IDI_ICON    //图标编号      
MAKEINTRESOURCE //用这个宏的主要原因是有的资源是用序号定义的,而不是字符串.所以要把数字转换成字符串指针   
        
2、设置图标:     
case WM_INITDIALOG :        
        hIcon = LoadIcon (hAppInstance, MAKEINTRESOURCE (IDI_ICON));
        //设置图标
        SendMessage(hDlg,WM_SETICON,ICON_BIG,(DWORD)hIcon);
        SendMessage(hDlg,WM_SETICON,ICON_SMALL,(DWORD)hIcon);
        
        return TRUE;

4 对话框回调函数的定位
思路:根据前面三节逆向内容的经验,很容易判断。
5 OD消息断点的使用
思路:打开OD的windows的窗口,在Button上设置消息断点LButtonUp,然后设置内存断点。能够快速过系统函数。

你可能感兴趣的:(零基础逆向工程30_Win32_04_资源文件_消息断点)