4.4.3 what→where

“在这样的构造下,RtlFreeHeap的时候会有一系列操作。”老师接着解释道。“首先,esi是指向‘Buf2’的管理结构,后面会有esi=esi-24的操作,esi就指向了‘Buf1’的存储空间数据。如图4-46。”

“然后会有, mov eax,[esi];mov esi, [esi+4] 的操作,现在eax和esi都是‘Buf1’中的数据了。如图4-47。”

“最后,有一个 mov [esi],eax 的操作(图4-48),即我们想要的what→where。这里的where是esi,what是eax,而且esi和eax是‘Buf1’中的数据,都是我们可以控制的。”

“哦,那我们精心构造B的管理结构的值,并覆盖掉what和where位置上的值就可以了!”宇强现在明白了。