草庐IT

PE格式:分析IatHook并实现

Ring3层的IATHOOK和EATHOOK其原理是通过替换IAT表中函数的原始地址从而实现Hook的,与普通的InlineHook不太一样IATHook需要充分理解PE文件的结构才能完成Hook,接下来将具体分析IATHook的实现原理,并编写一个DLL注入文件,实现IATHook。在早些年系统中运行的都是DOS应用,所以DOS头结构就是在那个年代产生的,那时候还没有PE结构的概念,不过软件行业发展到今天DOS头部分的功能已经无意义了,但为了最大的兼容性微软还是保留了DOS文件头,有些软件在识别程序是不是可执行文件的时候通常会读取PE文件的前两个字节来判断是不是MZ。上图就是PE文件中的DO

逆向基础知识-汇编和PE文件

汇编基础知识1.九个寄存器(32位)寄存器编号eax:累加器(accumulator),它是很多加法乘法指令的缺省寄存器。0ecx:计数器(counter),是重复(REP)前缀指令和LOOP指令的内定计数器。1edx:总是被用来放整数除法产生的余数。2ebx:"基地址"(base)寄存器,在内存寻址时存放基地址。3esp:存储堆栈的最顶端4EBP:是"基址指针",不是必须的5esi:6edi:变址寄存器,主要用于存放存储单元在段内的偏移量,作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。它们可作一般的存储器指针使用。7eip:存储当前CPU马上要执行的指令寄存器32位可以拆分为两个1

逆向基础知识-汇编和PE文件

汇编基础知识1.九个寄存器(32位)寄存器编号eax:累加器(accumulator),它是很多加法乘法指令的缺省寄存器。0ecx:计数器(counter),是重复(REP)前缀指令和LOOP指令的内定计数器。1edx:总是被用来放整数除法产生的余数。2ebx:"基地址"(base)寄存器,在内存寻址时存放基地址。3esp:存储堆栈的最顶端4EBP:是"基址指针",不是必须的5esi:6edi:变址寄存器,主要用于存放存储单元在段内的偏移量,作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。它们可作一般的存储器指针使用。7eip:存储当前CPU马上要执行的指令寄存器32位可以拆分为两个1