說明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