一、typedef的用法 ①:定义一种类型的别名,但不是简单的宏替换。 通常来说,typedef要比#define要好,特别是在有指针的场合: typedef   char  *pStr1; #define pStr2  char*; pStr1  s1,s2; pStr2  s3,s4; 在上述的变量定义中,s1、s2、s3都被定义为c […]

一、什么是内存对齐、为什么需要内存对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 字,双字,和四字在自然边界上不需要在内存中对齐。(对字,双字,和四字来说,自然边界分别是偶数地址,可以 […]

这是原来操作系统的课程设计做的东西,现在拿出来晒晒 主要实现的功能有:磁盘分区表分区、FAT32、NTFS文件系统分析。 分区表详解:http://www.alonemonkey.com/mbr-dpt-ebr.html FAT32详解:http://www.alonemonkey.com/detail-fat32-filesys.html NTFS详解:http://www.alonemonke […]

上篇在详解FAT32文件系统中介绍了FAT32文件系统存储数据的原理,这篇就来介绍下NTFS文件系统。NTFS、用过Windows系统的人都知道,它是一个很强大的文件系统,支持的功能很多,存储的原理也很复杂。目前绝大多数Windows用户都是使用NTFS文件系统,它主要以安全性和稳定性而闻名,下面是它的一些主要特点。 安全性高:NTFS支持基于文件或目录的ACL,并且支持加密文件系统(EFS)。 […]

硬盘是用来存储数据的,为了使用和管理方便,这些数据以文件的形式存储在硬盘上。任何操作系统都有自己的文件管理系统,不同的文件系统又有各自不同的逻辑组织方式。例如:常见的文件系统有FAT,NTFS,EXT,UFS,HFS+等等。下面就来学习一下基于Windows的FAT32文件系统。 FAT32文件系统由DBR及其保留扇区,FAT1,FAT2和DATA四个部分组成,其机构如下图: 这些结构是在分区被格 […]

主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区,它在硬盘上的三维地址为(0柱面,0磁头,1扇区)。在深入讨论主引导扇区内部结构的时候,有时也将其开头的446字节内容特指为“主引导记录”(MBR),其后是4个16字节的“磁盘分区表”(DPT),以及2字节的结束标志(55AA)。因此,在使用“主引导记录”(MBR)这个 […]

IRP基本数据结构: IRP是由I/O管理器发出的,I/O管理器是用户态与内核态之间的桥梁,当用户态进程发出I/O请求时,I/O管理器就捕获这些请求,将其转换为IRP请求,发送给驱动程序。I/O管理器负责所有I/O请求的调度和管理工作,根据请求内容的不同,选择相应的驱动程序对象,设备对象,并生成、发送、释放各种不同的IRP。整个I/O处理流程是在它的指挥下完成的。 一个IRP是从非分页内存中分配的 […]

在IDT,Interrupt Descriptor Table,中断描述符表中详述了IDT的概念以及三种不同的描述符,现在用代码来实现Hook 所有IDT,代码出自combojiang大牛的文章http://bbs.pediy.com/showthread.php?t=59867。 思路是这样的: 通过修改ISR的入口地址跳转到自己写的汇编代码,然后保存当前堆栈环境,再跳转到自己的处理函数,进行完 […]

IDT,Interrupt Descriptor Table,中断描述符表是CPU用来处理中断和程序异常的。 CPU用8位的中断类型码通过中断向量表找到相应的中断处理程序的入口地址。那么什么是中断向量表呢?中断向量表就是中断向量的列表。那么什么又是中断向量呢?所谓中断向量,就是中断处理程序的入口地址。展开来讲,中断向量表,就是中断处理程序入口地址的列表。 中断向量在内存中保存,其中存放着256个中 […]

这是堕落天才原创的一种方法,其实就是改变sysenter地址里面代码的执行顺序,可以说就是inline hook。 在普通sysenter hook讲到一般的拦截方法就是通过rdmsr  wrmsr两个指令把原来的sysenter地址改成自己的sysenter地址,然后再跳回原来的sysenter地址。但是,这种方法虽然使用简单,但是检测也简单。 一般的rootkit检测工具检测函数in […]