起初,我是 C++ 和调试的新手。我使用带有 DEBUG_ONLY_THIS_PROCESS 参数的 CreateProcess api,然后等待 CREATE_PROCESS_DEBUG_EVENT。收到后,我检查 Eip 寄存器以获取该点的地址。我认为这一点是主函数的地址。
为了验证这个想法,我使用 ollydbg 查看 exe 的起始地址。但和我的不一样。我用调试 api 找到的是 0x77a364d8,但 olly 说它是 0x00401000。然后我没有停下来检查olly中的地址0x77a364d8。我找到了地址并在那里设置了一个断点。
然后我重新加载了olly,看到olly首先进入0x77a364d8地址并加载进程,然后进入0x00401000地址并在那里等待。如我所见,0x77a364d8 地址指向一些 ntdll 函数以将进程加载到内存。
如果是真的,我如何通过代码获取 0x00401000 地址(c++,我是新手,请越过 t 的 :)),它是 Main 函数的地址还是什么?