加载 PE 文件并启动它,如何捕获 exit/return 代码

Loading a PE File and Launching it, how to capture the exit/return code

我手动(在代码中)加载 windows PE 文件并通过调用结构“IMAGE_NT_HEADERS32”中定义的入口点成功执行它。然而,由于这个值是一个无效的返回函数,我们如何 'read' 它提供的 exit/return 代码?

即当我调用它时(这是 PE 文件的入口点)

((void(*)(void))EntryAddr)();

它 place/put 它的 'int main(...)' 或 'int winmain(...)' 调用的退出代码在哪里?

提前致谢。

编辑:为了澄清(见下面的评论)。我的应用程序使用 VirtualAllocEx 而不是任何 NtCreateProcess 方法将 exe 直接加载到内存中。

感谢上面的“Eryk Sun”,他的解决方案是正确的,这段代码确实有效..

// call the entry point :: here we assume that everything is ok.
((void(*)(void))EntryAddr)();

DWORD exit;
GetExitCodeProcess(GetModuleHandle(NULL), &exit);