我正在编写自己的小用户模式调试器以获得乐趣。我知道PE头中指定的入口点不是程序定义的main()(至于微软c ++运行时也是如此)
我在哪里可以找到关于此入口点之间的调用的一些文档,直到实际的main()函数,调用它们的原因以及它们的作用?
答案 0 :(得分:2)
你做不到。实际上主要可能不存在。例如:您可以覆盖链接器使用的默认CRT入口点,主内容可以内联到CRT启动函数等...
答案 1 :(得分:1)
CRT的源代码随Visual Studio一起提供。例如,对于Visual Studio 2010的默认安装位置,它位于:
C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src
实际main()
位于crt0.c
。
不同类型的CRT(静态,DLL,MT,x86,x64等)由某些定义控制,如CRTDLL
,_M_IA64
等。你会在挖掘的时候看到。
答案 2 :(得分:0)
除了源代码本身之外,AFAIK的调用等代码的操作都没有记录。
将光标放在main
中,然后使用调试器“run to here”。或者在那里设置一个断点。然后只检查调用堆栈中的调用。
干杯&第h。,