在上一篇文章Visual Studio调试之断点基础篇里面介绍了什么是断点,INT 是Intel系列CPU的一个指令,可以让程序产生一个中断或者异常。程序中如果有中断或者异常发生了以后,CPU会中断程序的执行,去一个叫做IDT的部件查找处理这个中断(或者异常)的例程(Handler)。IDT是操作系...
分类:
其他好文 时间:
2016-02-02 14:19:28
阅读次数:
157
首先总结2种切换到内核模式方法的各自流程:内存法(中断法):(用户模式)WriteFile()->ntdll!NtWriteFile()->ntdll!KiIntSystemCall()->int2Eh->查找IDT的内存地址,偏移0x2E处->(内核模式)nt!KiSystemService()->nt!KiFastCallEntry()->nt!NtWriteF..
再次梳理会用到的一些数据结构和名词中断向量表(中断描述符表)idt_table全局,8字节64位,从低到高位16位段选择符,32位偏移量,16位状态信息256项起始地址在内核数据节的idt中用于寻找各种门,门的作用是防止用户程序访问陷阱门、中断门等特殊资源,出于安全考虑,linux为用户留有3,4,...
分类:
其他好文 时间:
2015-10-23 16:02:19
阅读次数:
482
一、中断初始化 1、中断向量表IDT初始化void __init init_IRQ(void){ int i;#ifndef CONFIG_X86_VISWS_APIC init_ISA_irqs();#else init_VISWS_APIC_irqs();#endif /* * Cove...
分类:
系统相关 时间:
2015-09-13 21:21:36
阅读次数:
258
Visual Studio调试之断点进阶篇在上一篇文章Visual Studio调试之断点基础篇里面介绍了什么是断点,INT是Intel系列CPU的一个指令,可以让程序产生一个中断或者异常。程序中如果有中断或者异常发生了以后,CPU会中断程序的执行,去一个叫做IDT的部件查找处理这个中断(或者异常)...
分类:
其他好文 时间:
2015-09-06 21:31:26
阅读次数:
260
linux磁盘分区到文件系统创建首先了解磁盘的基本构造需要用到的分区命令:fdisk:对于一块硬盘来讲,最多只能管理15分区语法:fdisk[OPTION][DEVICE]p:print,显示已有分区n:new,创建d:delete,删除w:write,写入磁盘并退出q:quit,放弃更新并退出m:获取帮助l:列表所分区idt:调整分..
分类:
系统相关 时间:
2015-09-02 02:16:59
阅读次数:
274
IDT:中断描述符表(Interrupt Descriptor Table,IDT)将每个异常或中断向量分别与它们的处理过程联系起来。
GDT:全局描述符表,在英特尔x86系列处理器的80286起,为了定义的特点使用不同的存储区,在程序执行期间,包括基地址,大小和访问权限,如可执行可写。
LDT:局部描述符表(LDT --- Local Descriptor Table)是保护模式下存储器寻址...
分类:
系统相关 时间:
2015-08-04 21:07:59
阅读次数:
193
第二天总结学习内容:寄存器(eflags,IDTR,GDTR,CR0),bootsect应用的相关知识及其流程,gdt实验:实践boot相关功能,移动位置,加载扇区,建立gdt以及idt,进入实模式,跳转到gas编译的head第一条语句总结:1,理论bootsect到setup a,被加载...
分类:
其他好文 时间:
2015-08-01 00:49:12
阅读次数:
221
在之前的一篇文章中介绍了替换IDT向量表中的地址来达到Hook的目的IDT hook KiTrap03但是这样很容易就可以被检测了。接下来要学习就是通过patch GDT来达到Hook IDT的目的。首先,我们要了解一下,当触发INT 3号中断之后,CPU是如何找到接下来要执行的指令的地址。CPU ...
分类:
其他好文 时间:
2015-07-31 21:35:02
阅读次数:
167
kd> !idt -a 查看idtkd> dt _ktrap_frame 异常帧kd> ba e1 Address 下硬件执行断点kd> ba w4 Address 下硬件读写断点kd> k 查看栈回溯kd> !pcr CPU控制块
分类:
数据库 时间:
2015-06-17 00:31:58
阅读次数:
152