__alloca_probe_16 是什么,它有什么作用?

逆向工程 艾达 部件
2021-06-17 01:10:13

我正在对一些 Windows 应用程序进行逆向工程。我遇到了 IDA 认可的这个函数:

call __alloca_probe_16

除了here之外,我无法找到有关此功能的任何文档/参考海报表明这__alloca_probe是 API 的支持例程,但_alloca()没有提供任何参考。

我只是想知道是否有人知道这个函数的作用,以及将来我可以在哪里找到对这样的未记录/内部(?)API 的引用。

1个回答

此函数确保alloca()调用返回与 16 字节边界对齐的指针。您可以alloca16.asm在 Visual C++ 的 CRT 源中看到注释

; _alloca_probe_16, _alloca_probe_8 - align allocation to 16/8 byte boundary
;
;Purpose:
;       Adjust allocation size so the ESP returned from chkstk will be aligned
;       to 16/8 bit boundary. Call chkstk to do the real allocation.
;Entry:
;       EAX = size of local frame
;
;Exit:
;       Adjusted EAX.
;
;Uses:
;       EAX

注意:此评论似乎已过时;当前实现尾调用_chkstk,因此分配(ESP 调整)会立即发生。