日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

7.中断门

發布時間:2025/3/20 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7.中断门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Windows沒有使用調用門,但是使用了中斷門:
<1>系統調用
老的CPU調用一些api從r3進入r0,就是通過中斷門,新的都是快速調用了

<2>調試
用od等一些調試器下斷點,就是將他的下斷位置的某一個字節改成0xCC (int 3)

  • IDT即中斷描述符表,同GDT一樣, IDT也是由一系列描述符組成的,每個.描述符占8個字節。但要注意的是, IDT表中的第一個元素不是NULL

  • IDT表的構成:
    IDT表可以包含3種門描述符:
    任務門描述符
    中斷門描述符
    陷阱門描述符

  • typedef struct _IDTENTRY {unsigned short LowOffset;unsigned short selector;unsigned char retention : 5;unsigned char zero1 : 3;unsigned char gate_type : 1;//1:中斷門。0:陷阱門unsigned char zero2 : 1;unsigned char interrupt_gate_size : 1;//中斷門大小。1:32位,0:16位unsigned char zero3 : 1;unsigned char zero4 : 1;unsigned char DPL : 2;//描述符特權級別unsigned char P : 1;//段存在的標志unsigned short HiOffset; } IDTENTRY, *PIDTENTRY;#pragma pack(2) typedef struct _IDTR {USHORT limit;ULONG Base; }IDTR,*PIDTR; #pragma pack()//遍歷idt VOID enumidt() {IDTR idtr;PIDTENTRY pIdtEntry;_asm sidt idtr;KdPrint(("%x %x"), idtr.Base, idtr.limit);pIdtEntry = (PIDTENTRY)idtr.Base;for (ULONG i = 0; i < (idtr.limit + 1) / sizeof(IDTENTRY); i++){KdPrint(("%d %x\n", i, MAKELONG(pIdtEntry[i].LowOffset, pIdtEntry[i].HiOffset)));} }

    兩段offset拼成一個地址,segment selector為段選擇子。
    中斷門不允許傳參數了,高0~7必須為0。
    P為1
    DPL為11
    8~11位為1110

    ????ee00`0008???? //中斷門

    用int 0x20進入中斷門

    測試代碼

    #include<windows.h> #include<stdio.h> DWORD val; void _declspec(naked)func() {_asm{//int 3pushadpushfdmov eax,[0x80b95400]mov ebx,[eax]mov val,ebxpopfdpopadiretd //返回}}int main() {_asm{int 0x20}printf("%x", val);getchar(); }

    修改idt表 要找好空白位置再改

    執行結果

    進入中斷門,CPU會把EFLAGS中的IF位置清0
    if位一旦為0,將不再接收可屏蔽中斷

    比如說我門的程序在跑,我們突然按了一下鍵盤快捷鍵讓屏幕鎖住,雖然程序在跑但是我們按了鍵盤,它會通過硬件發送一個中斷請求讓cpu知道,這種就是可屏蔽中斷

    不可屏蔽中斷
    電腦真正執行突然停電了,電源會通過電源管理器向當前的cpu發送一個請求,這個請求是不受if位影響的,cpu一旦就是到它必須馬上處理

    就算斷電了電源上的電容會支持一會讓CPU處理完這個請求

    總結

    以上是生活随笔為你收集整理的7.中断门的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。