说明css
教程是周壑老师在 B 站的 windows 内核实验系列视频,这只是笔记,不是教程,你们想要学习能够去 B 站找视频看
nginx
B 站空间连接:web
https://space.bilibili.com/37877654
swift
windows内核实验第一集:segmentfault
https://www.bilibili.com/video/av35033387windows
实验环境配置api
\\.\pipe\com_1

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional Debug" /noexecute=optin /fastdetect /debugport=COM1 /baudrate=115200

D:\anquan\CTF-tools\RE\windbg\windbg_cn_6.11.0001.404.exe -b -k com:pipe,port=\\.\pipe\com_1,baud=115200,resets=0 -y SRV*D:\anquan\symbol*http://msdl.microsoft.com/download/symbols
D:\anquan\CTF-tools\RE\windbg\windbg_cn_6.11.0001.404.exe
D:\anquan\symbol

实验 1:中断提权微信
r eax
dq 地址 L140
eq 8003f500 0040ee00`00081000
r idtr

dq 8003f400 -L40

eq 8003f500 0040ee00`00081000


DWORD g_temp=0;void _declspec(naked) IdtEntry()//这是一个裸函数,它的入口是401000{ _asm{ mov eax,dword ptr ds:[0x8003f014] mov g_temp,eax iretd }}void go()//用来触发异常的{ _asm int 0x20/*这个地方,涉及到属性了,要是 int 3 的话,由于属性 ee00 是容许 ring 3 也就是用户访问的,因此会提示触发了一个断点,若是是 int 0 的话就属于你是用户态却想访问内核态的东西 8e00,会报错,当正常出现这个异常的时候是由硬件访问这个地址的 */}void main(){ if((DWORD)IdtEntry != 0x401000) { printf("%p\n",IdtEntry); exit(-1); } go(); printf("%p\n",g_temp); system("pause");}
本文分享自微信公众号 - 陈冠男的游戏人生(CGN-115)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。ide