![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Windows编程
kernweak
日子越来越有判头了
展开
-
《Windows内核原理与实现笔记》(三)Windows引导过程
内核加载在Intel x86系统上,Windows操作系统获得控制首先从硬盘的主引导记录(MBR,MasterBoot Record)开始,Windows Setup程序在安装Windows时填充MBR(其他的磁盘管理程序也可能填充MBR)。MBR包含代码和数据,其代码称为引导代码,在系统引导时首先获得控制;MBR中的数据是一张分区表,指定了每个分区在磁盘上的位置和大小,以及分区的类型。当...原创 2019-12-26 21:52:21 · 852 阅读 · 0 评论 -
windows下进程间通信的方法
进程与进程通信进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码、数据以及它可利用的系统资源(如文件、管道等)组成。多进程/多线程是Windows操作系统的一个基本特征。Microsoft Win32应用编程接口(Application Programming Interface, API)提供了大量支持应用程序间数据共享和交换的机制,这些机制行使的活动称为进程间通信(In...原创 2019-09-24 11:03:01 · 1355 阅读 · 0 评论 -
error C4996: 'inet_ntoa'与error C4996: 'inet_addr'
在VS2017,64位的Windows系统中不能再使用#include <winsock2.h>的老旧函数inet_addr(),inet_ntoa()等旧版函数。使用#include<WS2tcpip.h>新版函数。例如使用inet_ntoa()时,会报如下错误提示:错误 1 error C4996: 'inet_ntoa': Use inet_ntop() ...原创 2019-08-26 11:44:34 · 1978 阅读 · 0 评论 -
Ring3层hook
hook engine:nthookenginemhookDetour方法:本进程hook,直接调用hook函数(自己进程还要hook?),否则写一个dll,在dll里hook每一个函数,然后将该dll注入到目标进程,达到hook目标进程中的函数的目的。MHOOK要获取原始函数地址#include mhook.htypedef ULONG (WINAPI* _N...原创 2019-06-02 04:45:12 · 719 阅读 · 0 评论 -
SEH溢出
_try{ strcpy(buf,input); zero=4/zero;}_except(MyExceptionhandler){}SEH结构存放在系统栈中,当线程初始化时,会自动向栈中安装一个SEH,作为线程默认的异常处理。如果程序代码使用了tryexcept,或者assert宏等异常处理机制,编译器将最终通过当前函数栈帧中安装一个seh来实现异常处理,栈中一般有...原创 2019-06-13 03:17:50 · 585 阅读 · 0 评论 -
段描述符浅谈
描述符表中存放的是段描述符,如下图所示图1-1 段描述符通用格式段描述符基本属性段描述符是GDT和LDT中的一个数据结构项,用于向处理器提供有关一个段的位置大小访问控制的信息状态信息,每个段描述符的长度是8个字节,含有3个主要字段段基地址 段限长 段属性基地址字段Base描述了一个短的起始位置,由三个部分组成一共32位,段基地址可以是0~4GB范围内的任意地址(这同实...原创 2019-04-26 12:58:20 · 1602 阅读 · 0 评论 -
BIOS+MBR与UEFI+GPT
前天面试某公司,有道面试题,BIOS+MBR与UEFI+GPT与UEFI+GPT的区别,并说明磁盘限制大小,为什么?之前老师讲过,但是没想起来,下面总结一下:BIOS+MBRLBA(logical block address,32位),中文名称:逻辑区块地址。是描述电脑存储设备上数据所在区块的通用机制,一般用在像硬盘这样的辅助记忆设备。LBA可以意指某个数据区块的地址或是某个地址所指向...原创 2018-11-05 11:31:26 · 528 阅读 · 0 评论 -
使用NT_SUCCESS()宏判断驱动返回NTSTATUS值的原因
根据大佬的博客,首先//// Status values are 32 bit values laid out as follows://// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0// +-...原创 2018-10-18 10:22:22 · 1786 阅读 · 0 评论 -
WIN32编程视频的相关笔记一
编码中GB2312是利用ASIIC的127到256的两个确定一个汉字,所以不同语言不兼容,unicode只是一种编码,即所有语言符号有唯一值,而他的存储格式被分为unicode-8或者-16,即内核单元用几位,具体符号比如16的开头有个FFFE和FEFF是标志大端还是小段存储,在文本开头显示,具体存储看其的编码比如分3个段加不同的前缀,由于unicode最多四个字节存储,但有些一字节即可,所以浪费...原创 2018-09-03 21:33:19 · 396 阅读 · 0 评论 -
保护模式之页相关的笔记
保护模式之页相关的笔记分页物理地址如下指令: MOV eax,dword ptr ds:[0x12345678] 其中,0x12345678 是有效地址 ds.Base + 0x12345678 是线性地址 物理地址在哪里?CR3寄存器是所有寄存器里面,唯一一个存储物理地址的寄存器,其他都是线性地址。 每个进程都有一个CR3,(准确的说是都一个CR3的值,CR...原创 2018-09-05 11:16:14 · 806 阅读 · 0 评论 -
Windows消息机制
消息队列在哪消息队列进程-->消息队列消息队列-->鼠标消息队列-->键盘消息队列-->其他进程的消息消息队列放在哪里这个模式怎么区分消息属于谁,是通过一个专门进程处理消息,这样问题是有跨进程通信太费时。Windows不是这样,Linux是这样。微软是把消息队列存到了0环。 怎么找到消息结构体,是KThread(任何一个线程都有个内核结构...原创 2018-09-04 23:22:17 · 2726 阅读 · 1 评论 -
Windows等待唤醒机制
临界区并发是指多个线程在同时执行: 单核(是分时执行,不是真正的同时) 多核(在某一个时刻,会同时有多个线程再执行) 同步则是保证在并发执行的环境中各个线程可以有序的执行 临界区:一次只允许一个线程进入直到离开DWORD dwFlag = 0; //实现临界区的方式就是加锁 //锁:全局变量 进去加一 出去减一if(dwFlag ==...原创 2018-09-04 10:33:26 · 1874 阅读 · 1 评论