认识 IDT表

A、反断点的一些原理

   B、认识IDT表

   C、IDT表相关结构

   D、读出IDT表-sidt指令

   E、测试

一、反断点的一些原理

    1、让他不能正常下断点 (0xCC断点int 3)

    2、正常下断点后,让他不能断下(IDT HOOK)

二、IDT表

大小 00-0xFF ,0-255

返回 iretd ;

扫描二维码关注公众号,回复: 3543668 查看本文章

中断INT n

举个简单的例子

我们常会在驱动代码里写一行_asm int 3

这样我们就手动设置了一个断点,当代码执行到这里 就会使CPU的执行暂停,并跳到中断处理函数中去执行。

 

同样的和SSDT与SSDT Shadow一样 IDT也有一张IDT表(俗称中断描述符表)

1、怎么样获取IDT表基址?

2、怎么样读取IDT表 中的中断函数地址?

__asm sidt idt_info

#pragma pack(push)

#pragma pack(1) //

typedef struct _IDTR //IDT基址

{

    USHORT limit; //范围 占8位

    ULONG base;  //基地址 占32位 PIDT_ENTRY类型指针

}IDTR,*PIDTR;

256*8

typedef struct _IDT_ENTRY

{

    USHORT offset_low; //中断处理函数地址低16位

    USHORT selector;

    UCHAR  reserved;

    UCHAR  type:4;

    UCHAR  always0:1;

    UCHAR  dpl:2;

    UCHAR  present:1;

    USHORT offset_high;//中断处理函数地址低16位

}IDT_ENTRY,*PIDT_ENTRY;//+3.offset_high<<16+offset_low //int 3 中断处理函数地址

#pragma pack(pop) //#pragma pack(pop)

猜你喜欢

转载自blog.csdn.net/zang141588761/article/details/82972489