零基础逆向工程30_Win32_04_资源文件_消息断点
2024-10-19 19:55:05
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,然后设置内存断点。能够快速过系统函数。
最新文章
- Appfuse:扩展自己的GenericManager
- Cannot add Controls from 64-bit Assemblies to the Toolbox or Use in Designers Within the Visual Studio IDE
- SqlServer删除表中重复记录
- Mssql迁移至Oracle 查询优化
- SDN组网相关解决方案
- Objective-C( 语法二)
- linux上安装memcached
- C随便练练手的题
- 化繁为简,无需后端。巧用Yql+rss,搭建我的个人网站
- 武汉科技大学ACM :1002: A+B for Input-Output Practice (II)
- 如何让MyEclispe中英文切换
- nginx默认虚拟主机
- 重新关联bat文件的打开方式为系统默认方式
- JavaEE介绍
- 【FF14】工匠配方爬取
- django 通过ajax完成邮箱用户注册、激活账号
- 【原创】大数据基础之Benchmark(4)TPC-DS测试结果(hive/hive on spark/spark sql/impala/presto)
- Ignatius and the Princess III HDU - 1028 -生成函数or完全背包计数
- Simple Question
- [转] 关于 Ceph PG
热门文章
- [转]hadoop运行mapreduce作业无法连接0.0.0.0/0.0.0.0:10020
- 8、泛型程序设计与c++标准模板库3.迭代器
- POJ 3691 DNA repair (DP+字符串)
- IOS 获取系统通讯录
- 滴水穿石 C#中多线程 委托的使用
- Dijkstra 路径规划 C#
- 使用Log4j2,打包后提示ERROR StatusLogger Log4j2 could not find a logging implementation.
- js对象转换为json字符串
- PostFX v2后期处理特效包:升级更惊艳的视觉效果
- 创建、配置Servlet