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