解读windows核心编程
为32位和64位Windows系统构建和实现应用程序;
为延迟加载、API拦截和进程注入构建DLL;
使用结构化异常处理、Windows错误恢复和应用程序重启等机制。
虚坏叔叔
「虚幻私塾」
展开
-
《解读Windows 核心编程》 之 FormatMessage()的用法
FormatMessage是一个Windows API函数。它的功能就是将GetLastError函数得到的错误信息(这个错误信息是数字代号)转化成字符串信息的函数。DWORD WINAPI FormatMessage ( DWORD dwFlags, // source and processing options原创 2014-04-21 10:03:16 · 2409 阅读 · 0 评论 -
《解读window核心编程》 之 char与wchat_t在WinNT.h下的定义
原创 2014-04-22 09:33:57 · 1476 阅读 · 0 评论 -
《解读window核心编程》 之 字符和字符串处理方式
推荐的字符和字符串处理方式开始将文本字符串想象为字符的数组,而不是 char 或字节的数组;用通用数据类型(如 TCHAR/PTSTR )来表示文本字符和字符串;用明确的数据类型(如 BYTE 和 PBYTE )来表示字节,字节指针和数据缓冲区;用 TEXT 或 _T 宏来表示字面量字符和字符串,但为了保持一致性和更好的可读性,请避免两者混用;执行全局替换(例如用 PTSTR 替换 PST原创 2014-04-22 10:25:52 · 1343 阅读 · 0 评论 -
《解读window核心编程》 之 内核对象
1. 简单区分内核对象和其他对象的方法:创建需要安全信息的多半是内核对象。2. 每个进程有一个内核对象表,表的每一项是一个简单结构,包括真实内核对象地址和访问权限等。用户代码持有的内核对象句柄其实是对象表中对应项的索引。因此如果CloseHandle关闭一个对象后没有清空变量,且在对象表的同样位置恰好又创建了一个新的内核对象,对之前没清空的无效变量的访问会造成b原创 2014-04-23 08:49:13 · 1489 阅读 · 0 评论 -
《解读window核心编程》 之 进程
1. 进程是执行文件的运行时形态。包括两部分:内核数据(对应内核对象)、地址空间(包括执行文件代码和栈堆等动态内存)。2. 把VC的“系统-子系统”值删除掉,即不指定控制台或GUI,则编译器会根据代码中存在main或者WinMain来自动选择子系统(这里不谈Unicode了),很方便。3. 启动程序:根据子系统执行mainCRTStartup原创 2014-04-24 08:48:50 · 1764 阅读 · 0 评论 -
最常见的Windows数据类型
原创 2014-04-24 16:55:59 · 1354 阅读 · 0 评论 -
链接器link.exe 编译器cl.exe 资源编译器rc.exe
1.cl.exe文件是Visual C\C++的编译器,它将程序源代码文件编译为obj文件。2.rc.exe文件是资源编译器。工程项目中的.rc文件中包含了对程序中所使用资源(菜单、图标等)的描述。rc.exe将.rc格式的文件编译为.res文件,供链接器链接到可执行文件中。3.link.exe是Windows平台的链接器,它将cl.exe编译生成的obj文件,资源编译器生成的.r原创 2014-04-24 20:07:44 · 35383 阅读 · 0 评论 -
常用的环境变量
原创 2014-04-24 21:08:51 · 1395 阅读 · 0 评论 -
附加依赖项 和 附加库目录 的使用有什么区别?
附加依赖项 是指输入项,如某个.LIB文件。附加库目录 是你用 #pragma comment(lib,"a.lib")的时候;此时就搜索a.lib的路径列表就包含这个路径。若是要链接一个lib,直接把它添加到附加依赖项 和 把它所在的目录添加到附加库目录里面有什么区别?添加到附加依赖项 :你的LIB文件被真正包含进来了。把它所在的目录添加到附加库目录里原创 2014-04-25 08:51:09 · 5236 阅读 · 1 评论 -
相对路径 和 绝对路径
绝对路径:是从盘符开始的路径,形如C:\windows\system32\cmd.exe相对路径:是从当前路径开始的路径,假如当前路径为C:\windows要描述上述路径,只需输入system32\cmd.exe实际上,严格的相对路径写法应为.\system32\cmd.exe其中,.表示当前路径,在通常情况下可以省略,只有在特殊的情况下不能省略。假原创 2014-04-25 09:26:04 · 1519 阅读 · 0 评论 -
虚拟内存布局、内存的分工、堆与栈
进程的虚拟内存空间分为两个部分,低2GB(或3GB_)由应用程序使用,高2GB(或1GB)由系统内核程序使用。系统内核的内存空间中包括驱动程序,系统内核可执行程序、用于内存管理的数据结构(页目录、页表等),用于进程管理、线程调度的数据结构、各种中断处理程序,系统缓存等。应用程序可使用的低地址空间中包括了应用程序的代码、数据(全局变量等)、系统和用户DLL的代码、各线程的栈、堆等。栈原创 2014-04-25 11:53:26 · 3074 阅读 · 0 评论 -
Win32DLL,MFC常规DLL和MFC拓展DLL 的简单学习总结
Win32DLL使用的是Win32的API实现的,只能导出函数,能被各种应用程序调用,适用范围最广。MFC常规DLL是适用MFC创建的,就像MFC程序跟Win32程序的关系一样,MFC常规DLL和Win32DLL的关系也是如此。它使用MFC的机制,只能导出标准C函数。如此,它便可以被大部分Win32程序调用。MFC拓展DLL也也使用的是MFC机制创建的,相比于MFC常规DLL,拓展原创 2014-04-25 16:32:06 · 1213 阅读 · 0 评论 -
《解读window核心编程》 之 注册表
1 注册表的作用及组织形式Windows系统使用注册表来存储系统和应用程序配置数据。很多系统和应用程序重要的配置的信息都存储在注册表中。注册表是一种以树型结构组织的数据库。树的每一个节点称作键(key),每个节点可以包含若干子键,键可以存储数据,存储的数据称作键值。一个键无论其是否有子键,都可以有键值。一个键可以有很多个键值,每个键值都有一个名字,包含若干数据,所包含的数据类型可以有很多种原创 2014-04-26 08:54:48 · 1788 阅读 · 0 评论 -
同步I/O 和 异步I/O
所谓同步I/O是指在调用ReadFile、WriteFile等函数进行输入输出操作时,系统完成了输入输出ReedFile、WriteFile才返回。在操作系统进行I/O操作的过程上,用户态线程不能执行,因此在同步I/O时,如果需要在I/0时进行其他操作就只能再开启线程。而异步I/O是在调用ReadFile、WriteFile等函数后,函数立即返回,线程可以进行其他操作。剩下的I/O原创 2014-04-26 09:12:52 · 1811 阅读 · 0 评论