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