内核学习
0F34
二树妹妹
展开
-
Xperf 使用方法
Xperf 使用文章目录了解安装收集分析其他附录了解xperf是Windows Performance Tools Kit中的一个工具xperf是一套工具集,这些工具目前包含一个 xperf 跟踪捕获工具、一个 xperfview 虚拟化工具(也称为性能分析器)和一个 xbootmgr 启动跟踪捕获工具。这些工具用于分析大量的性能问题,包括应用程序启动次数、启动问题、延迟的过程调用和中断活动(DPC 和 ISR)、系统响应问题、应用程序资源利用和中断风暴。xperf基于Windows事件跟踪Eve原创 2020-11-17 15:41:44 · 4965 阅读 · 1 评论 -
自实现API绕过用户层HOOK
开始正文,用NtReadVirtualMemory函数做例子 0.获取自实现函数地址如果是自己写的函数,那就把你写入的空间首地址整过来如果是系统自带内核函数,直接使用windbg:就可以获得函数地址!1.然后将该函数地址放置在第一个系统服务表的尾部因为上图有0x11C个函数,所以我们要填充在0x11d处(尾部)2.将函数个数+13.,接下来去修改函数参数字节个数表因为原本...原创 2020-03-20 19:07:31 · 805 阅读 · 1 评论 -
Windows内核之模拟线程切换(附源码)
Windows内核之线程切换目录文章目录目录模拟线程切换总结线程切换_主动切换总结:时钟中断切换总结:时间片管理线程优先级调度链表(32个)如何高效查找模拟线程切换实验代码(海东老师的代码,I’m 搬运工)核心代码:mov [esi+GMThread_t.KernelStack], esp//经典线程切换,另外一个线程复活mov esp, [edi+GMThread_t.Ker...原创 2020-03-19 15:39:06 · 722 阅读 · 0 评论 -
0环与3环之间的通信(常规方式)附完整代码
驱动程序开发中0环和3环之间的通信方式(常规方式)文章目录1.设备对象2.创建设备对象3.设置交互数据的方式4.IRP与派遣函数5.IRP的类型6.派遣函数在哪里注册呢?7.派遣函数的格式8.通过IRP_MJ_DEVICE_CONTROL交互数据9.几个重要的结构体IRPIO_STACK_LOCATIONIO_STACK_LOCATION Parameters完整代码内核代码用户层代码1.设备...原创 2020-03-19 15:05:12 · 1521 阅读 · 4 评论 -
内核空间与内核模块
内核空间与内核模块内核空间进程A,B两个不同进程,低2G内存空间(ring 3)所对应的物理页几乎是不一样的,而高2G的内存空间对应的物理页却几乎是一样的.不是每一个进程都有自己的内核空间,而是所有的进程共享一个内核空间可以做个实验驱动环境:win7 x64//定义一个变量,输出变量线性地址#include<ntddk.h>VOID DriverUnload(PDR...原创 2020-03-16 16:37:15 · 540 阅读 · 0 评论 -
内核编程基础
内核编程基础文章目录1.内核API的使用2.未导出函数的使用3.基本数据类型4.返回值5.内核中的异常处理6.常用的内核内存函数7.内核字符串种类内核字符串常用函数1.内核API的使用在应用层编程 我们可以使用WINDWOS提供的各种API函数,只要导入头文件<windows.h>就可以了,但是在内核编程的时候,我们不能像Ring3那样直接使用。微软为内核程序提供了专门的API...原创 2020-03-16 12:07:14 · 348 阅读 · 0 评论 -
windows内核之进程/线程结构体
进程与线程目录文章目录目录进程结构体EPROCESS_EPROCESS_KPROCESS其他重要结构体线程结构体ETHREADETHREAD_KTHREAD其他重要结构体CPU控制区结构体KPCRNT_TIB其他重要成员KPRCB等待链表和调度链表等待链表33个链表版本差异总结进程结构体EPROCESS注意分清楚peb(ring 3)与EPROCESS(ring 0)结构体很多,往往我...原创 2020-03-12 18:56:40 · 1243 阅读 · 2 评论 -
滴水内核中级班阶段测试题
题目:给定一个线性地址,和长度,读取内容:目前:还做不到读取内容,但是可以修该页权限,获得PDE,PTE值(10-10-12)后续:补充读取内容和2-9-9-12分页模式题目要求:int ReadMemory(OUT BYTE* buffer,IN DWORD dwAddr,IN DWORD dwLeght)要求:1)可以自己指定分页方式.2)页不存在,要提示,不能报错.3...原创 2020-03-09 19:31:51 · 1149 阅读 · 0 评论 -
搭建驱动(内核)开发环境_vs2017+WDK1809
Install Visual Studio下载链接:https://docs.microsoft.com/en-us/windows-hardware/drivers/other-wdk-downloads#step-2-install-the-wdk这个链接也包含WDK的下载,可以根据系统版本下载对应版本的WDK.安装选项:如果需要兼容XP等操作系统并且需要编写MFC应用程序,还需要...原创 2020-01-16 20:21:26 · 2025 阅读 · 0 评论 -
API函数的调用过程
API函数的调用过程(ring3)Windows APIApplication Programing Interface (应用程序接口) 简称API函数Windows 有多少个API?主要是存放在C:\WINDOWS\system32下面所有的dll几个重要的dllKernel32.dll:最核心的功能模块,比如管理内存,进程和线程相关的函数等.User32.dll...原创 2020-01-14 20:20:25 · 2546 阅读 · 0 评论 -
保护模式 x86 PDE-PTE中的PWT_PCD位
PDE-PTE中的PWT_PCD位目录文章目录目录CPU缓存PWT 位 [3]PCD 位 [4]CPU缓存1>CPU缓存是位于CPU与物理内存之间的临时存储器,他的容量比内存小得多,但是交换速度却比内存要快得多.2>CPU缓存可以做的很大,有几K,几十K,几百K甚至上M的也有.CPU缓存与TLB的区别:TLB :线性地址<----->物理地址 CP...原创 2020-01-10 19:14:11 · 625 阅读 · 0 评论 -
保护模式 x86 控制寄存器
控制寄存器目录文章目录目录Cr0寄存器PE 位 [0]PG 位 [31]WP 位 [16]Cr2 寄存器Cr4 寄存器PAE 位 [5]PSE 位 [4]控制寄存器用户控制和确定CPU的操作模式.Cr0 Cr1 Cr2 Cr3 Cr4(注意跟DR0-DR7分开)Cr1 保留Cr3 页目录表基址Cr0寄存器PE 位 [0]PE = Protection Enable(启用保护) ...原创 2020-01-10 19:13:15 · 274 阅读 · 0 评论 -
保护模式 x86 TLB
TLB文章目录TLBTLB结构TLB种类实验思考:通过一个线性地址0x12345678访问一个物理页,我们想要读取0x12345678地指处一个字节的数据时, 操作系统是真的只读了一个字节吗?答:线性地址首先会被拆分,然后读取PDE(4字节),再读取PTE(4字节),最后读取物理页上的1字节,总共读取了8+1字节.补充提问:会不会有这种情况,DWORD 大小数据,前两个字节在一个...原创 2020-01-10 19:10:54 · 338 阅读 · 0 评论 -
保护模式 x86 中断与异常
中断与异常目录文章目录中断与异常目录中断不可屏蔽请求如何处理可屏蔽中断可屏蔽中断如何处理?异常异常处理缺页异常小结练习中断1.中断通常是由CPU外部的输入输出设备(硬件)供外部设备通知CPU"有事情需要处理",因此又叫中断请求(Interrupt Request)2.中断请求的目的是希望CPU暂时停止执行当前正在执行的程序,转去执行中断请求所对应的中断处理例程(中断处理程序在哪儿由IDT...原创 2020-01-10 19:08:27 · 612 阅读 · 0 评论 -
保护模式 x86 页保护机制
页的机制目录文章目录页的机制目录分页物理地址-线性地址-有效地址分页机制2 9 9 1210 10 12设置分页方式实验:通过线性地址找到物理地址(10-10-12)PDE PTEPDE_PTE属性P位 [0]R/W位 [1]U/S [2]P/S PDE[7] pte没有A位D位页目录表基址 0xc0300000页表基址 0xc0000000线性地址转物理地址公式分页物理地址-线性地址-...原创 2020-01-06 19:01:41 · 759 阅读 · 0 评论 -
保护模式X86 段机制
段的机制文章目录段的机制段寄存器段寄存器结构段寄存器属性探测段描述符与段选择子GDT 全局描述符表段描述符段选择子修改段寄存器LDT 局部描述符表段描述符属性P位 高四15G位 高四23S位 高四12D/B位 高四[22]1.对CS段(代码段)的影响2.对SS段(栈段,仍属于数据段)的影响3.对向下拓展的数据段影响TYPE域 高四[8,11]当表示数据段时当表示代码段时当表示系统段时段描述符结构...原创 2019-12-25 16:26:44 · 426 阅读 · 1 评论