c++ - 当 C++ 程序在 Windows 上终止时,终止 stub 调用的最后一个函数是什么?

标签 c++ visual-c++ reverse-engineering

这个问题是关于逆向工程和 Microsoft 标准 C 库的。

当 C 程序正常终止时,即在 main() 结束时执行 return 0;。发生了什么(请概括)。 具体来说,C 库调用的最后函数是什么?

最佳答案

您可以在“%Program Files%\Microsoft Visual Studio x.0\VC\crt\src”中找到 Microsoft CRT 的源代码。

可执行文件 (mainCRTStartup) 的入口点在 crt0.c 中,或者,如果使用运行时 DLL,则在 crtexe.c 中。您可以看到在调用 main() 之后它调用了 exit()exit() 的源代码在crt0dat.c 中。它调用 C 和 C++ 终止处理程序(关闭 stdio 句柄等),调用 atexit() 函数,最后调用调用 kernel32 的 ExitProcess() 的 __crtExitProcess()。

关于c++ - 当 C++ 程序在 Windows 上终止时,终止 stub 调用的最后一个函数是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5619015/

相关文章:

c++ - 为什么结构中的指针在 Visual C++ 中会出现错误,而 GCC 却不会?

java - 防止 Java 代理在运行时附加

c++ - 什么是 char* const argv[]?

c++ - 为什么我们需要 `simple-declaration` 中的第二个定义?

c++ - 是否有一个工具来解析强制文档的 C++

.net - 如何将 System::String^ 转换为 std::string?

c++ - 将 GNUPLOT 与 Visual Studio 结合使用

c++ - 在 64 位 VC++ 2010 上用于 boost 的预编译 .libs

c - 有没有办法在 strace 输出中查看原始指针背后的值?

reactjs - 从react.js源代码生成序列图的工具