摘要:
ASLR在Windows Vista后才真正发挥作用,它包含:映像随机化①、堆栈随机化②、PEB和TEB随机化③。 ①、③的随机化效果其实不太好;②确实可以防范精确攻击,但鉴于有 、heap spray等不需要精确跳转的攻击手法,因而防范作用有限。 突破ASLR的方法: 1. 攻击未启用ASLR的模 阅读全文
摘要:
DEP(Data Execution Prevention),当程序尝试在数据页面上执行指令时,CPU将抛出异常。 DEP会阻止数据页(如默认的堆页、各种堆栈页以及内存池页)执行代码 。 DEP有软件DEP(即SafeSEH)、硬件DEP。 要突破软件DEP参见 "突破SafeSEH" 要突破硬件D 阅读全文
摘要:
1. 堆的数据结构 堆表索引空闲态堆块,重要的堆表有两类:空表、快表。我们通过下面代码练习识别堆表、堆块: Release版运行,跳入OD调试界面: 堆区起始地址0x3A0000. 当一个堆刚被初始化时,它只有一个空闲的大块(“尾块”),而它被记录在了空表的第0项。除了第0项外,其余各项空表索引均指 阅读全文
摘要:
工作原理:编译器启动SafeSEH选项后,在编译时将所有异常处理函数地址编入一张表,俗称“良民册”。当程序调用异常处理函数时,会检查该函数是否位于该册①。 ①处再具体一些: 1. 检查 异常处理链 是否位于当前程序的栈中,若 不在 则停止调用异常处理函数 2. 检查 异常处理函数指针 是否位于当前程 阅读全文