了解一下Windows Cracker
Windows Cracker
消息拆析宏
可以为消息进行参数分解
无需记住或查阅资料来了解WParam和lParam的意义
可以忘记旧的消息处理方式:switch/case
不适合于大型复杂的需要处理大量消息的应用: coding is slow and program debugging and maintenance become slow as the application grows.
WindowsX.h
包含三种类型的宏: Macro APIs, window message crackers, Control APIs
优点:
1)减少强制类型转换数量,避免强制类型转换出错;
2)程序可读性增强;
3)16位和Win32 API之间的转换;
4)简便易懂(宏);
5)容易与现存代码结合;
6)可用于C语言和C++语言;
7)可效仿编制自己的宏;
8) 使用这些宏,你不必关心和了解隐含的Windows结构。
代码Demo:
#include <windows.h> #include <windowsx.h> #include <tchar.h> #include <cstdio> FILE* fp = NULL;/* BOOL Cls_OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct) */ //#define HANDLE_WM_CREATE(hwnd, wParam, lParam, fn) ((fn)((hwnd), (LPCREATESTRUCT)(lParam)) ? 0L : (LRESULT)-1L) //#define FORWARD_WM_CREATE(hwnd, lpCreateStruct, fn) (BOOL)(DWORD)(fn)((hwnd), WM_CREATE, 0L, (LPARAM)(LPCREATESTRUCT)(lpCreateStruct)) BOOL fnWndProc_OnCreate(HWND hWnd, LPCREATESTRUCT lpCreateStruct) {fprintf(fp," Entering fnWndProc_OnCreate()\n");fprintf(fp," hWnd = %u\n",(unsigned)hWnd);fprintf(fp," Leaving fnWndProc_OnCreate()\n\n");/* MSDN states WM_CREATE should return 0 to continue and -1 for failure *///return FALSE;/* but the HANDLE_WM_CREATE macro translates return values greater than zero to 0, and the rest to -1. */return TRUE; }/* void Cls_OnSize(HWND hwnd, UINT state, int cx, int cy) */ // #define HANDLE_WM_SIZE(hwnd, wParam, lParam, fn) ((fn)((hwnd), (UINT)(wParam), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam)), 0L) // #define FORWARD_WM_SIZE(hwnd, state, cx, cy, fn) (void)(fn)((hwnd), WM_SIZE, (WPARAM)(UINT)(state), MAKELPARAM((cx), (cy)))void fnWndProc_OnSize(HWND hWnd, UINT state, int cx, int cy) {fprintf(fp," Entering fnWndProc_OnSize()\n");fprintf(fp," Width = %d\tHeight = %d\n",cx,cy);fprintf(fp," Leaving fnWndProc_OnSize()\n\n"); }/* void Cls_OnPaint(HWND hwnd) */ // #define HANDLE_WM_PAINT(hwnd, wParam, lParam, fn) ((fn)(hwnd), 0L) // #define FORWARD_WM_PAINT(hwnd, fn) (void)(fn)((hwnd), WM_PAINT, 0L, 0L)void fnWndProc_OnPaint(HWND hWnd) {PAINTSTRUCT ps;HDC hDC;fprintf(fp," Entering fnWndProc_OnPaint()\n");hDC=BeginPaint(hWnd,&ps);fprintf(fp," Painting Window!\n");fprintf(fp," ps.rcPaint.right = %d\n",(int)ps.rcPaint.right);fprintf(fp," ps.rcPaint.bottom = %d\n",(int)ps.rcPaint.bottom);EndPaint(hWnd,&ps);fprintf(fp," Leaving fnWndProc_OnPaint()\n\n"); }/* void Cls_OnClose(HWND hwnd) */ // #define HANDLE_WM_CLOSE(hwnd, wParam, lParam, fn) ((fn)(hwnd), 0L) // #define FORWARD_WM_CLOSE(hwnd, fn) (void)(fn)((hwnd), WM_CLOSE, 0L, 0L)void fnWndProc_OnClose(HWND hWnd) {fprintf(fp," Entering fnWndProc_OnClose()\n");fprintf(fp," hWnd = %u\n",(unsigned)hWnd);DestroyWindow(hWnd);fprintf(fp," Leaving fnWndProc_OnClose()\n"); }/* void Cls_OnDestroy(HWND hwnd) */ // #define HANDLE_WM_DESTROY(hwnd, wParam, lParam, fn) ((fn)(hwnd), 0L) // #define FORWARD_WM_DESTROY(hwnd, fn) (void)(fn)((hwnd), WM_DESTROY, 0L, 0L)void fnWndProc_OnDestroy(HWND hWnd) {fprintf(fp," Entering fnWndProc_OnDestroy()\n");fprintf(fp," hWnd = %u\n",(unsigned)hWnd);PostQuitMessage(0);fprintf(fp," Leaving fnWndProc_OnDestroy()\n"); }LRESULT CALLBACK fnWndProc(HWND hwnd, unsigned int msg, WPARAM wParam, LPARAM lParam) {switch(msg){HANDLE_MSG(hwnd, WM_CREATE, fnWndProc_OnCreate);HANDLE_MSG(hwnd, WM_SIZE, fnWndProc_OnSize);HANDLE_MSG(hwnd, WM_PAINT, fnWndProc_OnPaint);HANDLE_MSG(hwnd, WM_CLOSE, fnWndProc_OnClose);HANDLE_MSG(hwnd, WM_DESTROY, fnWndProc_OnDestroy);default:return (DefWindowProc(hwnd, msg, wParam, lParam));} }int WINAPI WinMain(HINSTANCE hIns, HINSTANCE hPrevIns, LPSTR lpszArgument, int nShow) {TCHAR szClassName[] = _T("Debugging Windows Programs");WNDCLASSEX wc;MSG messages;HWND hWnd;wc.lpszClassName = szClassName; wc.lpfnWndProc=fnWndProc;wc.cbSize = sizeof(WNDCLASSEX); wc.style=CS_DBLCLKS;wc.hIcon = LoadIcon(NULL,IDI_APPLICATION); wc.hInstance=hIns;wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor=LoadCursor(NULL,IDC_ARROW);wc.hbrBackground = (HBRUSH)COLOR_BTNSHADOW; wc.cbWndExtra=0;wc.lpszMenuName = NULL; wc.cbClsExtra=0;RegisterClassEx(&wc);fp = fopen("Output.txt","w");fprintf(fp,"Output.txt Opened In WinMain()\n");hWnd = CreateWindowEx(0,szClassName,szClassName,WS_OVERLAPPEDWINDOW,75,75,320,305,HWND_DESKTOP,0,hIns,0);ShowWindow(hWnd,nShow);while(GetMessage(&messages,NULL,0,0)){TranslateMessage(&messages);DispatchMessage(&messages);}fprintf(fp,"Output.txt Closed In WinMain()\n");fclose(fp);return messages.wParam; }
输出Output.txt
Output.txt Opened In WinMain()Entering fnWndProc_OnCreate()hWnd = 658154Leaving fnWndProc_OnCreate()Entering fnWndProc_OnSize()Width = 304 Height = 267Leaving fnWndProc_OnSize()Entering fnWndProc_OnPaint()Painting Window!ps.rcPaint.right = 304ps.rcPaint.bottom = 267Leaving fnWndProc_OnPaint()Entering fnWndProc_OnClose()hWnd = 658154Entering fnWndProc_OnDestroy()hWnd = 658154Leaving fnWndProc_OnDestroy()Leaving fnWndProc_OnClose() Output.txt Closed In WinMain()
参考:http://www.cplusplus.com/forum/windows/59737/
http://www.softpedia.com/get/Programming/SDK-DDK/Message-Cracker-Wizard.shtml (Message Cracker Wizard)
An innovative tool makes every Windows developer forget about the old way of handling messages!
百度云:http://pan.baidu.com/s/1dFkTds9%20 密码:8q7o
转载于:https://www.cnblogs.com/MakeView660/p/6543942.html
了解一下Windows Cracker相关推荐
- Windows 家族的十二种常用密码破解法
在日常操作中,我们经常要输入各种各样的密码,例 如开机时要输入密码, QQ 时也要先输入密码,假如你忘记了这些密码,就有可能用不了机器.打不开文件.不能聊天 ... . <?xml:namesp ...
- Windows 服务器安全维护知识
Windows Server2003 防***权限设置IIS服务器安全配置整理 一.系统的安装 1.按照Windows2003安装光盘的提示安装,默认情况下2003没有把IIS6.0安装在系统里面. ...
- 学习WINDOWS内核好书
以下是我下载到的一些书,如果要学习系统内核知识,由易到难的大概顺序我认为是: advance windows (windows高级编程指南),写得很浅显易懂,将读者的起点设置得较低(下载地点:见文尾# ...
- 在Windows上编译最新版本的Hashcat
最新版本V5.0.0下载地址: 可执行程序:https://hashcat.net/files/hashcat-5.0.0.7z 源代码:https://hashcat.net/files/hashc ...
- Windows下底层数据包发送实战
为什么80%的码农都做不了架构师?>>> 1.简介 所谓"底层数据包"指的是在"运行"于数据链路层的数据包,简单的说就是"以太 ...
- windows网络通讯端口
windows安全设置 一.windows网络通讯端口 1.端口分类 windows网络通讯端口可分为3大类: 1)公认端口(Well Known Ports):从0到1023,它们紧密绑定于一些服务 ...
- 双硬盘装linux系统,在我的双硬盘windows电脑上安装ubuntu18.04
在我的thinkpad电脑上安装ubuntu18.04-Desktop-LTS系统,达到windows+ubuntu的双系统环境 我的电脑配置 Intel i7-8550U,16GB内存,双硬盘256 ...
- WINDOWS 2003设置攻略
windows 2003 设置攻略 第一步: P2e6SQ f$T 一.先关闭不需要的端口 (@+S3g[#`:dg9v'X;Mp51CTO|计算机|网络|信息|技术|安全|路由器|网管 ...
- Windows XP快捷键大全
转自:http://www.360doc.com/content/09/1201/15/48325_10135892.shtml (360doc) Windows XP快捷键大全(中文版) ...
- web cracker
最新是4.0 Web Cracker v2.0 Final Copyright 1998 by DiTTo Released 12/02/98 This program MAY NOT BE SOLD ...
最新文章
- 1900万印度人疯抢6万份工作,加班至死,这才是真正的就业崩溃!
- 仿麦包包首页table轮换图jQuery(转自www.jqueryba.com)
- html的选择器使用
- python学号怎么编写_用python编写学生管理系统
- Zeppelin 可视化操作spark sql
- 扎克伯格夏威夷州大肆买地引发当地不满 被批搞“新殖民主义”
- 从1亿个ip中找出访问次数最多的IP
- [转载] log4j-over-slf4j与slf4j-log4j12共存stack overflow异常分析
- (转)Locale 详解
- 关于父窗口、子窗口的操作(如关闭、打开、调用方法、刷新等等)
- SVN(三)利用 IntelliJ IDEA 进行代码对比的方法
- teamviewer或向日葵远程ubuntu系统不能调节屏幕分辨率
- MySQL 复制表结构、数据
- 物联网关键之传感器技术
- since it exceeds Excel‘s limit of 65,530 URLS per worksheet
- 基于Wallpaper Engine的html插件罗盘时钟实现及简易桌面替换
- Qumarion 3D技术轻松建模 动漫制作更省心
- ePower入门-TLE9879新建Keil MDK工程
- cd4069中文资料详解
- VISUAL STUDIO 2019 的安装
热门文章
- 操作系统锁的实现方法有哪几种_深入理解多线程(四)——Moniter的实现原理...
- 自学iOS开发系列----UI(视图编程入门:UITabBarController)
- phpcms 会员头像h5上传_phpcms v9前台会员中心上传头像可getshell及修复
- Arduino基础入门篇19—点阵屏
- IDEA中Javaweb项目图片加载不出来解决方案
- Java集合原理分析
- win7台式机解决插入耳机没有声音以及显示麦克风未插入的解决方法
- 计算机网络之网络层-网络层拥塞控制
- ES slop问题纪录
- PS制作3D立体字、透明气泡