零基础逆向工程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,然后设置内存断点。能够快速过系统函数。

原文地址:https://www.cnblogs.com/flatcc/p/7694793.html