我正在对一些 Windows 应用程序进行逆向工程。我遇到了 IDA 认可的这个函数:
call __alloca_probe_16
除了here之外,我无法找到有关此功能的任何文档/参考。海报表明这__alloca_probe是 API 的支持例程,但_alloca()没有提供任何参考。
我只是想知道是否有人知道这个函数的作用,以及将来我可以在哪里找到对这样的未记录/内部(?)API 的引用。
我正在对一些 Windows 应用程序进行逆向工程。我遇到了 IDA 认可的这个函数:
call __alloca_probe_16
除了here之外,我无法找到有关此功能的任何文档/参考。海报表明这__alloca_probe是 API 的支持例程,但_alloca()没有提供任何参考。
我只是想知道是否有人知道这个函数的作用,以及将来我可以在哪里找到对这样的未记录/内部(?)API 的引用。
此函数确保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 调整)会立即发生。