ASLR+DEP是windows平台下最为常见的两种保护手段。这两种手段使得最基础的jmp esp等手法不再适用,而单纯的堆喷也会因为堆内存不可执行而失效。那么这里就来介绍一下heap spray+stack pivot,我一般称为堆喷+换栈的手法。堆喷是一个较为经典的漏洞利用方法,比如我们通过一个内存破坏类漏洞控制了一个对象的内存内容,那么我们就可以构造伪虚表来把程序的执行流程控制到我们的手中,而堆喷则提供了一个固定的地址让我们来放置虚表。在具有DEP的环境下,执行到堆空间时会发生异常,那么能不能结合能够绕过DEP的rop方法和能绕过ASLR的Heap spray呢。我们要讲的就是在这种思路下诞生的换栈方法。