
win32相关
文章平均质量分 63
win32相关
qwertyuiop_i
没有
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
win32相关(IAT HOOK)
如何编写IAT Hook原创 2025-06-07 15:41:49 · 327 阅读 · 0 评论 -
win32相关(消息Hook)
本文介绍了Windows消息钩子的实现方法,主要涉及三个关键API:SetWindowsHookEx设置钩子、CallNextHookEx传递钩子信息、UnhookWindowsHookEx卸载钩子。核心实现是将钩子函数封装在DLL中,通过SetWindowsHookEx安装全局或线程特定的键盘钩子。文章展示了完整的DLL代码实现,包括键盘消息处理回调函数KeyboardProc,以及调用的示例程序。当钩子成功安装后,系统会将DLL注入到目标进程,实现对按键消息的监控和输出。这种方法既可用于消息处理,也可作原创 2025-06-07 10:07:40 · 443 阅读 · 0 评论 -
win32相关(远程线程和远程线程注入)
作用:创建在另一个进程的虚拟地址空间中运行的线程。原创 2025-06-05 12:49:51 · 983 阅读 · 0 评论 -
win32相关(内存映射文件)
内存映射文件是将磁盘文件映射到进程地址空间的技术,允许像访问内存一样读写文件。示例代码展示了Windows系统下使用CreateFileMapping和MapViewOfFile实现文件映射的过程,包括读取和修改文件内容。特别说明了对系统DLL文件映射时的"写时拷贝"机制(通过FILE_MAP_COPY参数),当修改映射的系统文件时会创建副本,不影响其他进程使用的原始文件。这种技术提供了高效的文件I/O操作方法,同时确保了系统文件的完整性。原创 2025-06-03 14:20:51 · 258 阅读 · 0 评论 -
win32相关(虚拟内存和物理内存)
在win32操作系统下,每个进程都有它自己独立的4GB空间,是window给它分配的一个虚拟空间,并不是真正的物理空间,这4GB空间中,分为高2G和低2G,高2G是应用程序的,低2G空间是给内核应用共享的空间。虚拟内存(硬盘空间,当物理空间【内存条】不够用时,可以设置把硬盘上的一块空间拿来当做物理内存来使用)32位的系统最多可以识别物理内存为64G,但由于操作系统的限制比如XP,只能识别4G。更多的细节被操作系统封装在了底层实现,我们用户在平时的使用当中是感受不到的。原创 2025-06-02 22:38:10 · 357 阅读 · 0 评论 -
win32相关(事件)
摘要:本文介绍了Windows中的事件机制和线程同步技术。事件是系统或应用程序中可被检测的动作/状态变化,使用CreateEventW创建事件对象。通过示例代码展示了如何利用事件实现线程同步控制,包括线程等待事件触发的基本模式。随后探讨了生产者-消费者模型,演示了通过两个事件对象交替触发实现有序线程协作。代码展示了生产线程和消费线程如何通过事件信号交替执行,确保每次生产后消费,维持数据容量平衡,体现了"同步=互斥+有序"的原理。原创 2025-06-02 12:45:40 · 275 阅读 · 0 评论 -
win32相关(互斥体)
文章摘要: 互斥体(Mutex)是解决跨进程访问内核临界资源的机制,比线程锁更适用于多进程环境。通过CreateMutex创建命名互斥体,进程可通过WaitForSingleObject获取访问权,ReleaseMutex释放。与线程锁相比,互斥体支持超时等待、异常处理,但效率略低。常用于限制程序多开(检测ERROR_ALREADY_EXISTS),示例代码展示了互斥体的创建、获取、释放流程及其在多进程互斥访问中的应用效果。原创 2025-06-01 11:30:41 · 332 阅读 · 0 评论 -
win32相关(临界区)
摘要 本文通过多线程卖票的例子演示了线程安全问题。当多个线程同时访问全局变量g_num时,会出现线程不安全情况,如同一张票被重复销售。解决方法是使用Windows临界区(CRITICAL_SECTION)机制:先创建并初始化临界区变量,然后在访问共享资源前调用EnterCriticalSection进入临界区,访问结束后调用LeaveCriticalSection离开临界区。修改后的代码确保了同一时间只有一个线程能访问全局变量,从而解决了线程安全问题。原创 2025-05-31 19:39:42 · 291 阅读 · 0 评论 -
win32相关(创建线程)
摘要 线程是操作系统调度的最小执行单位,比进程更轻量,共享进程资源但拥有独立执行流。Windows系统提供多种线程操作API,如CreateThread创建线程、SuspendThread/ResumeThread控制线程状态、WaitForSingleObject等待线程完成等。线程有激发态和非激发态之分,主线程结束会强制终止子线程。通过工具函数可枚举系统线程并对其进行管理。线程编程需要注意资源共享和同步问题。原创 2025-05-30 21:35:43 · 384 阅读 · 0 评论 -
win32相关(进程间通信)
本文介绍了两种Windows进程间通信方法:WM_COPYDATA消息传递和邮槽通信。 WM_COPYDATA方式: 使用特殊的WM_COPYDATA消息传递数据 需要构建COPYDATASTRUCT结构体包含数据和大小 演示了发送端和接收端的实现代码 邮槽通信方式: 单向通信机制(客户端写入,服务端读取) 支持本地和网络通信(基于UDP协议) 使用CreateMailslot、CreateFile、WriteFile、ReadFile等API 提供了发送端和接收端的代码示例 这两种方法都能有效实现Wind原创 2025-05-28 17:23:43 · 263 阅读 · 0 评论 -
win32相关(进程相关API)
本文介绍了Windows系统中与进程管理相关的API函数。主要内容包括:1) 进程ID(PID)和句柄的概念;2) 关键API函数如CreateProcess(创建进程)、TerminateProcess(终止进程)和OpenProcess(打开进程)的使用方法及其参数说明;3) 特殊创建标志CREATE_SUSPENDED的作用;4) 其他常用进程信息获取函数如GetModuleFilename、GetCurrentDirectory等。文章还列举了多个辅助进程管理API,如获取进程ID、命令行、启动信息原创 2025-05-27 10:14:32 · 408 阅读 · 0 评论 -
win32相关(动态链接库)
动态链接库(DLL)是Windows系统中实现代码共享的重要机制。本文介绍了DLL的基本概念、特点和创建使用方法。DLL的主要优势包括代码共享、模块化设计、资源节省和运行时加载。创建DLL时提供了两种导出函数方式:声明导出和模块定义导出。使用DLL也有两种主要方法:lib隐式链接和LoadLibrary动态加载,前者将代码直接嵌入程序,后者则保持程序小巧但需要依赖外部DLL文件。通过具体代码示例展示了DLL的创建和调用过程,帮助开发者理解这一重要的Windows编程概念。原创 2025-05-27 10:00:23 · 741 阅读 · 0 评论 -
win32相关(句柄表)
内核对象是操作系统内核层创建的结构体,用于管理进程、线程、文件等资源。Windows和Linux中常见的内核对象类型包括进程对象、线程对象、文件对象等。由于用户程序无法直接访问内核地址空间,操作系统通过句柄表来管理内核对象,用户必须通过句柄来操作内核对象。多个进程可以通过OpenProcess或继承机制共享同一个内核对象。句柄表中的一个参数决定内核对象是否可被继承,子进程只能继承父进程中设置为可继承的内核对象。总结来说,共享内核对象的两种主要方式是通过OpenProcess打开进程,或通过父进程创建子进程并原创 2025-05-23 13:09:27 · 302 阅读 · 0 评论 -
win32相关(进程的创建过程)
什么是进程?进程简单来讲就是提供程序所需要的资源(如数据,代码等)我们来简单的看一下32位(x86),64位系统下的虚拟内存分布情况是怎样的也可以通过以下代码来查看内存信息32位 Windows 用户模式内存布局(典型情况)每一个进程都有一个虚拟的4g地址空间(x86),但实际上只有低2g(用户空间)才是程序自身能使用的地址,剩下的高2g(内核空间)是操作系统使用的地址,这2g的虚拟空间并不是当前程序独占的,只有当程序有使用到时,操作系统才会分配空间。原创 2025-05-20 16:44:37 · 393 阅读 · 0 评论 -
win32相关(字符编码)
ASCII编码是最基础的字符编码标准,使用7位二进制数表示128个字符,扩展ASCII则使用8位表示256个字符。GB2312编码兼容ASCII,单字节ASCII字符保持不变,双字节表示中文字符。Unicode为全球字符提供唯一数字标识,采用码点表示字符,范围为U+0000到U+10FFFF。Unicode的存储方式包括UTF-16和UTF-8,UTF-16固定使用2或4字节,而UTF-8采用变长存储,节省空间但解析复杂。UTF-8根据码点范围使用1到4字节表示字符,适合网络传输。原创 2025-05-17 17:29:29 · 810 阅读 · 0 评论