首先安装VMware虚拟机
在VMware中安装windowsXP系统安装玩之后然后打开c盘然后通过工具中的文件选项中查看页签里的高级设置吧后缀与隐藏的文件都显示出来,然后打开boot.ini文件,然后把下面的文字复制到boot.ini中把原来的内容覆盖掉。

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="MicrosoftWindows XP Professional" /noexecute=optin /fastdetect /debug/debugport =com1/baudrate=115200
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect 

然后重启

在这里插入图片描述
然后会出现上图的样子然后选择启用调试程序
然后操作系统的环境就搞好了,然后是VMware的环境,首先打开编辑虚拟机设置

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

管道名字:\.\pipe\com_1

然后把打印机给删了,打印机会占用串行端口。然后VMware的环境搞好了。

然后下载wdk,在wdk中有windbg工具,百度搜索wdk8.1随便找一个下载,安装完之后找到windbg文件打开它的属性面板在目标的值的后面输入-b -k com:pipe,port=\.\pipe\com_1,resets=0

在这里插入图片描述

然后打开windbg

然后就是这样
在这里插入图片描述

点击
在这里插入图片描述
会让虚拟机里的系统不会被断点卡住或者0:kd中输入g回车

在这里插入图片描述

windbg需要下载符号文件,百度上有,百度搜索windbg符号文件下载

windbg有许多命令,可以百度windbg常用命令

然后操作系统malloc内存分配的代码

分配内存涉及到一个用户态切换内核态(提权),切换的状态涉及到的四部分第一部分是c语言的封装第二部分kernel32.dll里面的api第三部分ntdll.dll里面的api第四部分进入内核态

可以下载ida反编译dll文件

然后它的一个执行链路

malloc/new->HeapAlloc->VirtualAlloc(kernel32,R3)->NtAllocateVirtualMemory(ntdll,R3)->NtAllocateVirtualMemory(ntkrnlpa,R0)

在这call调用了一个函数VirtualAllocEx
在这里插入图片描述

然后VirtualAllocEx中又调用了NtAllocateVirtualMemory
在这里插入图片描述

这个NtAllocateVirtualMemory是nt开头nt开头就去ntdll.dll中看

在这里插入图片描述

这里的call调用的是一个函数指针这个要去查SSDT表看看它是以什么方式进入的内核

进入内核的方式(SSDT)
1、快速调用(sysenter、sysexit)
2、调用门、中断门、任务门、陷阱门

OS是通过快速调用实现态的切换。

查看分配内存指令的结构·
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

进入内核查找分配内存的函数通过ssdt表

在这里插入图片描述
dd KeServicedescriptorTable查看系统服务表,通过系统服务表去查询进入内核态的函数

进程数据结构

在这里插入图片描述
线程数据结构

在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐