
Windows编程
文章平均质量分 80
FlowShell
这个作者很懒,什么都没留下…
展开
-
WM_PANINT 与 WM_ERASEBKGND 的区别
<br /> 当WM_PAINT不是由InvalidateRect产生时,即由最大化,最小化等产生时,或者移动产生(移动有时只会产生WM_ERASEBKGND消息)系统先发送WM_ERASEBKGND消息,再发送WM_PAINT消息.<br /> <br /> 如果处理WM_ERASEBKGND消息时返回FALSE,BeginPaint标记pt.fErase 为TRUE,如果处理WM_ERASEBKGND时返回TRUE,BeginPaint标记pt.fErase为FALSE.<br /><br转载 2010-08-16 21:26:00 · 2609 阅读 · 0 评论 -
超类化与子类化的区别?
本文转自:http://hi.baidu.com/zish/blog/item/2a4098501bef706a853524ca.html 1.子类化:改变一个已经存在的窗口实例的性质:消息处理与其他实例属性。在SDK编程范畴内,子类化就是改变一个窗口实例的窗口函数(通过GetWindowLong()和SetWindowLong()),子类化所要做的就是为某窗口实例编写新的窗口函数。其操作转载 2009-12-10 20:59:00 · 3674 阅读 · 0 评论 -
关于Z序的总结
Z 序:一个重叠窗口的堆,每个窗口在Z 序中 都有唯一一个位置。一个窗口的Z 序 ,指明了该窗口在重叠窗口堆中的位置。这个窗口堆 是沿着一个虚拟的轴——“ Z 轴”,从屏幕上垂直向屏幕外延伸。 Z 序顶部的窗口覆盖 Z 序中的其他窗口。 Z 序底部的窗口被 Z 序中的其他窗口覆盖。 系统用一个单链表维护 Z 序。系统按照顶端窗口、顶层窗口和子窗口的分类 ,将窗口插入到 Z 序表中。原创 2009-11-11 13:15:00 · 10715 阅读 · 3 评论 -
Dll与Hook
最近看了孙鑫的视频,学习了一下DLL和HOOK的一些知识,故此做下笔记。下面以add,sub两函数和Point类为例。一,Dll的简单使用 使用 一个DLL,一般需要另外两个文件.H和.LIB。.H文件或.LIB文件。.H文件可用于使用.DLL的客户或是.DLL文件本身,其作用编译时期。.LIB文件是一个引入苦,用于客户程序,作用在链接时期。.DLL文件当然作用于运行时期了。 打开VS2008,选择Win32,DLL空项目。新建一个DLL.CPP和DLL.H文件。//DLL.H原创 2010-12-23 14:46:00 · 4010 阅读 · 0 评论 -
GetSystemMetrics函数参数nIndex的定义
<br />SM_ARRANGE 返回是否预备最小化.<br />SM_CLEANBOOT 返回系统启动方式:<br /> 0 正常启动<br /> 1 安全模式启动<br /> 2 网络安全模式启动 <br />SM_CMOUSEBUTTONS 返回值为系统支持的鼠标键数,返回0,则系统中没有安装鼠标。 <br />SM_CXBORDER, <br />SM_CYBORDER 返回以相素值为单位的Windows窗口边框的宽度和高度,如果Windows的为3D形态,转载 2010-12-04 23:32:00 · 946 阅读 · 0 评论 -
虚函数HOOK
看来一些资料,觉得这篇写的比较好,做此笔记。栗子如下:#pragma once#include using namespace std;class A{public: int iVal1; int iVal2; virtual void print1() { cout<<"iVal1(A) = "<<iVal1<<endl; } virtual void转载 2016-08-16 00:19:24 · 1942 阅读 · 0 评论 -
SharedUserData
SharedUserData 是操作系统为每个进程提供的个共享数据结构,里面存放有很多重要的系统信息,如TickCount、系统时间、SystemRoot等。。。其在DDK定义为:代码:#define KI_USER_SHARED_DATA 0xffdf0000#define SharedUserData ((KUSER_SHARED_DATA * cons转载 2016-08-16 00:27:03 · 3990 阅读 · 0 评论 -
IAT HOOK
iat hook,也就是修改导入表实现函数调用的hook(运行时hook本进程)。注:iat(import address table,导入函数地址表,在这里说明一下:导入表是image import table,导入函数地址表是 image import address table,这是两个不同的pe文件中的表) 要实现iat hook,首先得清楚iat和导入表的结构。pe文件中,不管是在硬转载 2016-07-31 22:41:24 · 2059 阅读 · 1 评论 -
PE文件结构详解-PE导入表
PE文件结构详解(二)可执行文件头的最后展示了一个数组,PE文件结构详解(三)PE导出表中解释了其中第一项的格式,本篇文章来揭示这个数组中的第二项:IMAGE_DIRECTORY_ENTRY_IMPORT,即导入表。也许大家注意到过,在IMAGE_DATA_DIRECTORY中,有几项的名字都和导入表有关系,其中包括:IMAGE_DIRECTORY_ENTRY_IMPORT,IMAGE_D转载 2016-07-31 23:16:45 · 1398 阅读 · 0 评论 -
应用层HOOK技术的一些简单总结
在Window平台上开发任何稍微底层一点的东西,基本上都是Hook满天飞, 普通应用程序如此,安全软件更是如此, 这里简单记录一些常用的Hook技术。SetWindowsHookEx基本上做Windows开发都知道这个API, 它给我们提供了一个拦截系统事件和消息的机会, 并且它可以将我们的DLL注入到其他进程。但是随着64位时代的到来和Vista之后的UAC机制开启,这个AP转载 2016-07-31 23:17:42 · 3186 阅读 · 0 评论 -
Inline Hook
一、 什么是 inline hookinline hook 就是在运行的流程中插入跳转指令(call/jmp)来抢夺程序运行流程的一个方法。好了那么问题就来了:1. 插入怎么样的跳转指令 一般为 相对JMP(0xE9) + 4字节地址,方便计算 公式:源地址 + 相对偏移 = 目的地址 公式:目的地址 - 源地址 = 相对偏移2.转载 2016-08-02 15:08:26 · 1339 阅读 · 1 评论 -
使用PostThreadMessage向工作线程发送消息
把window线程间传送消息仔细的看了一遍,觉得以前的理解很不深刻。说一说对PostThreadMessage的理解。PostThreadMessage是一个线程体发送一个消息到指定的线程ID,其原型如下:BOOL PostThreadMessage( DWORD idThread, UINT Msg, WPARAM wParam,转载 2010-12-16 15:13:00 · 1049 阅读 · 0 评论 -
_TrackMouseEvent的用法
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Sty原创 2009-10-11 22:10:00 · 4066 阅读 · 1 评论 -
句柄和伪句柄
<br />句柄的由来:<br /> 从Visual C++的头文件来看,HANDLE被typedef为void的指针,那是指向未确定数据结构的指针:typedef void* HANDLE;<br />但是这并不说明任何问题,因为句柄远远不只是指向任意数据类型的指针。它是指向数据对象指针的指针。句柄的使用来源于早期的Windows,当时它只能在有限内存的机器中允许(因为当时内存昂贵也存储小)。为了留出足够的空间内存以运行其他程序,Windows经常将对象在内存中移动。但是如果进程已经有了指向该对转载 2011-04-18 17:06:00 · 2506 阅读 · 0 评论 -
Windows内存结构
1.进程虚拟地址空间布局: 每个进程都被赋予它自己的虚拟地址空间。对于3 2位进程来说,这个地址空间是4GB,Win2K在IA-32架构的CPU下面的进程地址空间分布如下表所示: 可见Win2K的内存布局非常简单,主要有4个部分,两个不能被存取的64K;然后剩下的部分就是分别是用户空间(2G–128K)和系统空间(2G)了。进程虚拟地址空间布局说明:1. 64K NULL指针分配区:这个分区的设置是为了帮助程序员掌握NULL指针的分配情况。如果你的进程中的线程试图读取该分区的地址转载 2011-04-19 20:30:00 · 2961 阅读 · 0 评论 -
windows路径操作API函数
备用,方便查找:PathRemoveArgs 去除路径的参数PathRemoveBackslash 去除路径最后的反斜杠"\"PathAddBackslash 在路径最后加上反斜杠"\"PathRemoveBlanks 去除路径前后的空格PathAddExtension 在文件路径后面加上扩展名PathRemoveExtension 去除文件路径扩展名Pat转载 2013-11-19 16:30:11 · 4176 阅读 · 0 评论 -
int在64位机或64位编译器中到底占用几个字节
数据类型 LP64 ILP64 LLP64 ILP32 LP32 char 8 8 8 8 8 short 16 16 16 16 16 _int32 N/A 32 N/转载 2013-11-28 19:41:49 · 4186 阅读 · 0 评论 -
文件属性结构体:WIN32_FIND_DATA
关于文件的全部属性信息,总计有以下以下9种:文件的标题名、文件的属性(只读、存档,隐藏等)、文件的创建时间、文件的最后访问时间、文件的最后修改时间、文件大小的高位双字、文件大小的低位双字、保留、保留。在这里只有文件标题名和文件的长度可以通过CFile类比较方便的获得,而对于其他几种属性的获取和设置就无能为力了。 在用findfirst()和findnext()函数去查找磁盘文件时经常转载 2015-02-10 15:36:51 · 3353 阅读 · 0 评论 -
坐标和几个函数的用法说明
本文转自:http://www.cppblog.com/Lee7/archive/2009/05/29/86070.html (1)Windows坐标系统Windows坐标系分为逻辑坐标系和设备坐标系两种,GDI支持这两种坐标系。一般而言,GDI的文本和图形输出函数使用逻辑坐标,而在客户区移动或按下鼠标的鼠标位置是采用设备坐标。逻辑坐标系是面向DC的坐标系,这种坐标不考虑具体的设备类型,在绘图转载 2010-03-08 21:55:00 · 2561 阅读 · 0 评论 -
WM_GETMINMAXINFO的作用
如果想要实现窗口全屏,并且还有状态栏,会出现问题,那就是OnGetMinMaxInfo函数的作用。你可以试一下,如果把这个函数去掉,则当你按下工具栏中的全屏显示按钮时,框架视图确实变大了,但没有想象的那样实现全屏显示,底边留下一个状态栏——一个有些发育不良的全屏显示窗口。为什么会这样呢?经过调试后,发现问题出在WM_GETMINMAXINFO消息的处理上。在Windows中,无论什么时候转载 2009-11-10 21:28:00 · 16196 阅读 · 5 评论 -
从WINAPI和CALLBACK这两个宏说开去- -(转)
WINAPI和CALLBACK这两个宏有什么区别呢? _stdcall _cdecl _pascal _fastcall这些关键字是什么意思,有什么区别呢? 首先看MSDN里给出的解释,不过有些语焉不详哦 WINAPI ·Use in place of FAR PASCAL in API declarations. If you are writing aDLL with转载 2009-10-18 20:02:00 · 1345 阅读 · 0 评论 -
Window窗口类型
在编写程序时有很多的窗口风格不知道是什么意思,我罗列一些:WS_BODER 窗口具有细线边框 WS_CAPTION 窗口具有标题栏(包含 WS_BODER) WS_CHILD 创建一个子窗口(此风格不能与 WS_POPUP 一起使用 ) WS_CHILDWINDOW 与 WS_CHILD 相同 WS_CLIPHILDREN 当在父窗口中画图时,绕开子窗口占有的区域。 WS_CLIPSBLING原创 2009-09-17 23:30:00 · 1283 阅读 · 0 评论 -
windows内存结构
本文转自:http://www.cnblogs.com/yoran/archive/2008/03/02/1087702.html 1.虚拟地址空间的大小•32位系统每个进程的虚拟地址空间是0x00000000 - 0xFFFFFFFF, 4GB,其中 从 0X80000000 - 0xFFFFFFFF为系统为内核占用;•64位系统每个进程的虚拟地址空间是0x0转载 2009-12-11 15:37:00 · 924 阅读 · 0 评论 -
windows PE文件结构及其加载机制
1. 概述PE文件的全称是Portable Executable,意为可移植的可执行的文件,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)。它是1993年Windows NT系统引入的新可执行文件格式,到现在已经经过20多年了。虽然使用PE作为可执行文件格式的Windows操作系统已经更换了很多版本,转载 2017-11-01 19:33:50 · 2452 阅读 · 0 评论