0

我想用一个干净的堆栈调用一个函数,它可以切断调用堆栈。

====================伪代码开始============================ =====

stackBaseAddress = 通过 NtCurrentTeb 查找堆栈基地址

stackCurrentSize = stackBaseAddress - esp

备份堆栈

memset(esp, 0, stackCurrentSize)

MessageBoxA(0, "1", 0, 0) <== 这里有问题,MessageBoxA 失败,GetLastError == 0

恢复堆栈

==============================伪代码结束=================== ===================

如果没有 memset(esp, 0, stackCurrentSize),一切顺利。

所以我认为堆栈中一定有一些不能擦除的东西,但是什么?

4

0 回答 0