![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
windows核心编程
文章平均质量分 89
读书笔记 # windows核心编程
二进制怪兽
博客用于记录学习过程,欢迎交流!个人网站:www.shiver.fun
展开
-
[目录][总结]Windows核心编程《零》目录
windows核心编程总结文章目录前言总结前言总结原创 2021-06-16 19:47:37 · 407 阅读 · 0 评论 -
[笔记]Windows核心编程《番外篇》常用的NT API及使用示例
文章目录前言NtQueryInformationProcess函数原型附录用例总结前言NTAPI:泛指ntdll.dll模块不对外提供的API接口一般通过动态载入库的方式(LoadLibrary + GetProcAddress)调用NtQueryInformationProcessNtQueryInformationProcess NtQueryInformationProcess用法函数原型NTSYSCALLAPINTSTATUSNTAPINtQueryInformationPro原创 2022-05-19 16:40:57 · 1421 阅读 · 0 评论 -
[笔记]Windows核心编程《番外篇》几种常见的执行命令行方法
文章目录C++ 控制台执行Windows命令行WinExecCreateProcessSystemShellExecute区别C++ 控制台执行Windows命令行WinExecCreateProcessSystemShellExecute区别c++ system()和WinExec()的区别 https://blog.csdn.net/qq_26591517/article/details/80513985winExec是不同步的进程调用,就是调用起来了就返回了,不会等调用起来的程序结束原创 2022-03-23 19:31:27 · 3028 阅读 · 0 评论 -
[笔记]Windows核心编程《番外篇》几种常见的IPC以及比较
参考 windows Interprocess Communications文章目录前言windows常见IPC以及实例IPC比较总结前言windows常见IPC以及实例windows的常见IPC有:文件映射共享内存Socket命名管道匿名管道邮件槽共享剪切板WM_COPYDATA消息动态数据交换对象连接与嵌入动态连接库远程过程调用NetBios函数IPC比较总结...原创 2022-05-12 11:01:45 · 362 阅读 · 0 评论 -
[笔记]Windows核心编程《二十三》结构化异常处理
文章目录前言总结1.SEH(Structured Exception Handling)和SJLJ(SetJump LongJump)区别对比前言总结1.SEH(Structured Exception Handling)和SJLJ(SetJump LongJump)区别对比原创 2022-03-16 17:46:02 · 651 阅读 · 0 评论 -
[笔记]Windows核心编程《二十二》注入DLL和拦截API
文章目录前言一、插入DLL:一个例子二、使用注册表来插入DLL三、使用Windows挂钩来插入DLL四、使用远程线程来插入DLL4.1 Inject Library示例应用程序4.2 Image Walk DLL五、使用特洛伊DLL来插入DLL六、将DLL作为调试程序来插入七、用Windows 98上的内存映射文件插入代码八、用CreateProcess插入代码九、挂接A P I的一个示例9.1 通过改写代码来挂接API、9.2 通过操作模块的输入节来挂接API9.3 LastMsgBoxInfo示例应用程原创 2022-02-26 23:37:30 · 1601 阅读 · 0 评论 -
[笔记]Windows核心编程《二十一》线程本地存储器TLS
文章目录前言一、动态TLS二、静态TLS总结前言一、动态TLS二、静态TLS总结原创 2022-02-26 23:30:40 · 500 阅读 · 0 评论 -
[笔记]Windows核心编程《二十》DLL的高级操作技术
文章目录前言一、DLL模块的显式加载和符号链接1.1 显式加载D L L模块1.2 显式卸载D L L模块1.3 显式链接到一个输出符号二、DLL的进入点函数2.1 DLL_PROCESS_ATTACH通知2.2 DLL_PROCESS_DETACH通知2.3 DLL_THREAD_ATTACH通知2.4 DLL_THREAD_DETACH通知2.5 顺序调用DllMain2.6 DllMain与C/C++运行期库三、延迟加载DLL四、函数转发器五、已知的DLL六、DLL转移七、改变模块的位置八、绑定模块总原创 2022-02-26 23:28:14 · 1060 阅读 · 0 评论 -
[笔记]Windows核心编程《十九》DLL基础
文章目录前言常用DLL使用DLL的一些原因一、DLL与进程的地址空间前言常用DLLWindows API中的所有函数都包含在 D L L中。3个最重要的 D L L是:Kernel32.dll:它包含用于管理内存、进程和线程的各个函数;User32.dll:它包含用于执行用户界面任务(如窗口的创建和消息的传送)的各个函数;GDI32.dll,它包含用于画图和显示文本的各个函数。其他:AdvAPI32. dll 包含用于实现对象安全性、注册表操作和事件记录的函数;ComDlg32.dl原创 2022-02-24 22:49:33 · 1729 阅读 · 0 评论 -
[笔记]Windows核心编程《十八》堆栈
文章目录前言一、进程的默认堆栈二、为什么要创建辅助堆栈2.1 保护组件2.2 更有效的内存管理2.3 进行本地访问2.4 减少线程同步的开销2.5 迅速释放堆栈三、如何创建辅助堆栈3.1 从堆栈中分配内存块3.2 改变内存块的大小3.3 了解内存块的大小3.4 释放内存块3.5 撤消堆栈3.6 用C + +程序来使用堆栈四、其他堆栈函数总结前言windows 对内存进行操作的机制:虚拟内存文件映射堆栈使用堆栈场景:堆栈可以用来分配许多较小的数据块。例如,若要对链接表和链接树进行管理,最原创 2022-02-22 13:37:23 · 1063 阅读 · 0 评论 -
[笔记]Windows核心编程《番外篇》几种Hook类型
文章目录前言消息HookWINAPI Hook驱动层Hook前言Windows中的Hook机制Hook,中文里常常被译作“钩子”或者“挂钩”,其实是Windows操作系统里的一种中断消息机制。可以把Hook理解为Windows操作系统消息处理机制的一个平台;应用程序可以通过设置Hook对某个进程或窗口进行监视,即:对特定事件“挂钩”;一旦预定义特定事件发生,Windows操作系统即会向钩子hook发送通知消息,这时,应用程序可进行响应。消息Hook参考Hook是WINDOWS提供的一种消原创 2022-01-25 19:15:51 · 2924 阅读 · 0 评论 -
[笔记]Windows核心编程《十七》内存映射文件
参考文章目录前言一、映射到内存的可执行文件和DLLCreateProcess调用过程二、映射到内存的数据文件三、使用内存映射文件四、用内存映射文件来处理大文件五、内存映射文件和一致性六、给内存映射文件的指定基地址七、内存映射文件的实现细节八、用内存映射文件再进程间共享数据九、以页交换文件为后背存储器的内存映射文件十、 稀疏调拨的内存映射文件前言内存映射文件 与虚拟内存相似,内存映射文件允许开发人员预定一块地址空间区域并给区域调拨物理存储器。不同之处在于内存映射文件的物理存储器来自磁盘上已有的文件,而不原创 2022-01-23 15:47:53 · 1995 阅读 · 0 评论 -
[笔记]Windows核心编程《十六》线程栈
《Windows核心编程》读书笔记十六 线程栈 文章目录一、C/C++运行库的栈检查函数二、Summation示例程序一、C/C++运行库的栈检查函数二、Summation示例程序原创 2021-12-27 00:25:35 · 958 阅读 · 0 评论 -
[笔记]Windows核心编程《十五》在应用程序中使用虚拟内存
文章目录前言一、预定地址空间区域1.1 VirtualAlloc函数二、给区域调拨物理存储器三、同时预定和调拨物理存储器四、何时调拨物理存储器五、撤销调拨物理存储器及释放区域六、改变保护属性七、重置物理存储器的内容前言Microsoft Windows 提供三种机制来对内存进行操控:虚拟内存 最适合用来管理大型对象数组或大型结构数组内存映射文件 最适合用来管理大型数据六(通常是文件)堆 最用来适合管理大量的小型对象一、预定地址空间区域1.1 VirtualAlloc函数LPVOID W原创 2021-12-12 21:50:21 · 795 阅读 · 0 评论 -
[笔记]Windows核心编程《十四》探索虚拟内存
[笔记]Windows核心编程《十四》探索虚拟内存原创 2021-12-12 21:01:02 · 930 阅读 · 0 评论 -
[笔记]Windows核心编程《十三》windows内存体系结构
参考文章目录13.1 进程的虚拟地址空间进程的虚拟地址空间32位进程64位进程13.2 虚拟地址空间的分区13.2.1 空指针赋值区地址范围目的13.2.2 用户模式分区1.在x86 Windows下得到更大的用户模式分区2.在64位windows下得到2GB用户模式分区13.2.3 64KB禁入分区13.2.4 内核模式分区13.3 地址空间中区域预定地址空间中的一块区域13.4 给区域调拨物理储存器13.5 物理存储器和页交换器13.6 页面保护属性13.7 实例分析13.8 数据对齐的重要性13.原创 2021-11-14 23:50:43 · 1231 阅读 · 0 评论 -
[笔记]Windows核心编程《十一》Windows线程池
参考1参考2文章目录前言11.1 情形1:以异步的方式调用函数11.1.1 显式地控制控制创建一个工作项向线程池提交一个请求取消已经提交的工作项或是等待工作项处理完毕关闭工作项11.1.2 Batch示例程序11.2 情形2:每隔一段时间调用一个函数11.2.1 线程池实现计时器通知线程池何时调用我们回调向线程池注册计时器(或者对计时器进行修改)确定某个计时器是否已经被设置等待一个计时器完成11.2.2 Timed Message Box示例程序11.3 情形3:在内核对象触发时调用一个函数内核对象被触原创 2021-10-17 23:14:35 · 1189 阅读 · 0 评论 -
[笔记]Windows核心编程《十二》纤程
文章目录原创 2021-10-17 21:22:47 · 720 阅读 · 0 评论 -
[笔记]Windows核心编程《九》同步设备I/O和异步设备I/O
参考1文章目录打开和关闭设备细看CreateFile函数使用文件设备取得文件的大小设置文件指针的位置执行同步设备I/O异步设备I/O基础接受I/O请求完成通知触发设备内核对象可提醒I/OI/O完成端口打开和关闭设备设备:定义为能与之通信的任何东西。表1:各种设备及其常见用途设备常见用途文件永久存储任何数据目录属性和文件压缩的设置逻辑磁盘驱动器格式化驱动器物理磁盘驱动器访问分区表串口通过电话线传输数据并口将数据传输至打印机邮件槽一原创 2021-09-25 22:12:30 · 642 阅读 · 0 评论 -
[笔记]Windows核心编程《八》用内核对象进行线程同步
参考1参考2文章目录前言用户模式下的同步机制内核模式下的同步机制等待函数WatiForSingleObjectWaitForMultipleOBjecs例等待成功所引起的副作用事件内核对象CreateEvent函数CreatEventEx创建对象可等待的计时器内核对象信号量内核对象互斥量内核对象线程同步对象速查表其他的线程同步函数前言用户模式下的同步机制用户模式下的同步机制的特点就是速度快,但也有些局限性,例如,对Interlocked系列函数只能戳一个值进行操作,它们从不会把线程切换到等待原创 2021-08-29 23:09:31 · 445 阅读 · 0 评论 -
[笔记]Windows核心编程《七》用户模式下的线程同步
参考1文章目录原子访问:Interlocked 系列函数原子访问原子 加原子 设值原子 比较交换地址实现旋转锁高速缓存行结构体设计高级线程同步关键段Slim 读/写锁AcquireSRWLockExclusive(&g_lock);ReleaseSRWLockExclusive(&g_lock);条件变量SleepConditionVariableCS/SleepConditionVariableSRWWakeConditionVariable/WakeAllConditionVariab原创 2021-08-15 19:10:25 · 611 阅读 · 0 评论 -
[笔记]Windows核心编程《六》线程调度、优先级和关联性
参考1参考2文章目录前言线程的挂起和恢复进程的挂起和恢复睡眠切换到另一个线程Sleep和SwitchToThread对比在超线程CPU上切换另一个线程线程的执行时间在实际上下文中谈Context结构线程优先级从抽象角度看优先级优先级编程动态提升线程优先级为前台进程微调调度程序调用I/O请求优先级Scheduling Lab示例程序关联性前言每个线程都有一个CONTEXT结构,保存在线程内核对象中。大约每隔20ms windows就会查看所有当前存在的线程内核对象。并在可调度的线程内核对象中选择一个原创 2021-07-18 23:27:27 · 1345 阅读 · 1 评论 -
[笔记]Windows核心编程《五》线程基础
参考1参考2文章目录原创 2021-07-18 22:24:40 · 824 阅读 · 0 评论 -
[笔记]Windows核心编程《四》作业
参考1参考2文章目录Job定义验证当前进程是否在一个现有的作业控制之下创建一个作业,返回一个作业内核对象访问打开Job对作业中的进程施加限制施加限制将进程放到作业中终止作业中所有线程作业通知JobLab 示例总结Job定义Windows提供了一个作业(job)内核对象,它允许我们将进程组合在一起并创建一个“沙箱”来限制进程能够做什么。最好将作业对象想象成一个进程容器。但是创建只包含一个进程的作业同样非常有用,因为这样可以对进程施加平时不能施加的限制。Job(作业),也就是进程组的概念,添加进同原创 2021-06-27 23:13:37 · 779 阅读 · 1 评论 -
[笔记]Windows核心编程《二》内核对象
文章目录进程和程序内核对象何为内核对象系统4环结构内核对象数据结构句柄使用计数Counter安全描述符SecurityDescriptor内核对象的安全性SECURYITY_ATTRIBUTES 结构体进程内核对象句柄表进程的句柄表结构创建一个内核对象关闭内核对象跨进程边界共享内核对象使用对象句柄继承改变句柄的标志为对象命名终端服务命名空间专有命名空间复制对象句柄工具winObj 查看所有内核对象及当前计数ProcessExplorer 查看所有进程状态总结进程和程序一、 进程是动态的,程序是静态的原创 2021-04-12 00:16:02 · 1272 阅读 · 0 评论 -
[笔记]Windows核心编程《一》错误处理、字符编码
windows核心编程1.vs选中函数 按下f1 可进入msdn网页 函数具体详情2.vsF5运行,Cirl+F5 无调试运行,F7编译,3.工具栏-》错误查找 工具可以查找错误码对应的错误含义。原创 2021-02-27 13:57:39 · 1251 阅读 · 1 评论 -
[笔记]Windows核心编程《三》进程
文章目录进程进程必须有一个线程进程销毁把进程所有线程退出调用ExitProcess 强制退出GUI和Console程序main函数运行生命周期获得系统总结进程进程必须有一个线程PrimaryThread 主线程进程销毁把进程所有线程退出调用ExitProcess 强制退出缺陷:会有资源没有释放GUI和Console程序属性-》链接器-》子系统GUI程序入口是_tWinMain(ASCII)/_twWinMain(Unicode)Console程序入口是_tmain()WinMain.原创 2021-04-11 22:56:02 · 670 阅读 · 0 评论