4.2.3 ShellCode的特殊要求

“ 第二步、ShellCode的编写 。我们已经详细解释过了,但堆溢出的ShellCode有特殊的要求。

(1)如果溢出的是默认堆,则不能使用网络相关的函数,比如开端口、反连等ShellCode都不能使用;

(2)可以想办法在ShellCode中恢复默认堆,然后再使用网络相关ShellCode,但有时恢复堆后仍不能用网络编程的函数;

(3)新建一个堆,不用默认堆;

(4)干脆就不用网络相关的ShellCode,只用添加用户一类的ShellCode。”

“可以看出,堆利用比较麻烦,在ShellCode中恢复堆这类高级技巧会在ShellCode高级编程中提到。这里就用最简单的手段——打开DOS窗口。”

“倒……”台下全晕了,“又开DOS窗口啊!”

“这里只是为了说明方法,以后用复杂可行的ShellCode替换就行了。”