摘要: DEP(Data Execution Prevention),当程序尝试在数据页面上执行指令时,CPU将抛出异常。 DEP会阻止数据页(如默认的堆页、各种堆栈页以及内存池页)执行代码 。 DEP有软件DEP(即SafeSEH)、硬件DEP。 要突破软件DEP参见 "突破SafeSEH" 要突破硬件D 阅读全文
posted @ 2017-10-08 16:56 T_1 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 1. 堆的数据结构 堆表索引空闲态堆块,重要的堆表有两类:空表、快表。我们通过下面代码练习识别堆表、堆块: Release版运行,跳入OD调试界面: 堆区起始地址0x3A0000. 当一个堆刚被初始化时,它只有一个空闲的大块(“尾块”),而它被记录在了空表的第0项。除了第0项外,其余各项空表索引均指 阅读全文
posted @ 2017-10-08 12:30 T_1 阅读(734) 评论(0) 推荐(0) 编辑
摘要: 工作原理:编译器启动SafeSEH选项后,在编译时将所有异常处理函数地址编入一张表,俗称“良民册”。当程序调用异常处理函数时,会检查该函数是否位于该册①。 ①处再具体一些: 1. 检查 异常处理链 是否位于当前程序的栈中,若 不在 则停止调用异常处理函数 2. 检查 异常处理函数指针 是否位于当前程 阅读全文
posted @ 2017-10-08 12:25 T_1 阅读(418) 评论(0) 推荐(0) 编辑
摘要: GS就是一个缓冲区溢出标志,如果发生缓冲区溢出,该标志会被覆盖,导致其值和其在.data区域的备份值不同,由此系统进入异常处理流程,函数不会正常返回,ret指令也不会执行。 以下情况VS不会开启GS: + 函数不包含缓冲区 + 函数被定义为具有变量参数列表 + 函数使用无保护的关键字标记 + 函数在 阅读全文
posted @ 2017-10-07 17:28 T_1 阅读(233) 评论(0) 推荐(0) 编辑
摘要: (本文更新ing...) 0. 一些命令 汇编命令 | 等价伪代码 | mov eax, ecx | eax=ecx add eax, ecx | eax+=ecx sub eax, ecx | eax =ecx inc eax | eax++ dec eax | eax lea eax, [ecx 阅读全文
posted @ 2017-09-16 16:10 T_1 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 参考 "手把手简易实现shellcode及详解" 0. 一个弹出shell的小程序 bump_shell.c: 编译后执行 : 1. gdb调试分析bump_shell 默认gdb反汇编语法是A&T,看起来有点别扭,所以先把语法设置为Intel格式: 对汇编不熟的话可以先看看 "汇编基础" ,对gd 阅读全文
posted @ 2017-09-16 14:36 T_1 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 本文是一些比较基础的shellcode开发技巧,有些技巧可能已经过时了。所有内容均摘自《0day安全软件漏洞分析技术 第二版》 关于exploit和shellcode的区别: 植入代码前需要大量调试,如,弄清程序有几个输入点,这些输入将最终会当做哪几个函数的第几个参数读入到内存的哪一个区域,哪一个输 阅读全文
posted @ 2017-09-16 11:17 T_1 阅读(334) 评论(0) 推荐(0) 编辑