我正在研究 PE 格式/Windows 加载程序,但我无法找到导致“不是有效的 Win32 应用程序”错误以及加载失败的具体原因。
我已经尝试根据Corkami 的研究更改 PE 标头中的 Major/Minor LinkerVersion 。我还尝试将 PE 文件头中所有不必要的数据结构归零。我有一个特定的文件,对于动态分析,它无法映射到内存中,并且当 Explorer.exe 尝试CreateFileMapping文件时,进程监视器显示“仅读取器锁定文件”状态。我想这只是内核例程给出 EXPLORER.EXE 的表面原因?
我什至尝试在 WinDbg 中打开加载程序管理单元并尝试在 WinDbg中加载文件,但也失败了,声称它不是有效的 Win32 应用程序。OllyDbg 失败,X32Dbg 也失败。但是,IDA Pro 能够很好地解析文件,当我导航到它的 AddressOfEntryPoint 时,似乎有有效的代码。我会在这里附上这个特定的主题,但该文件是恶意软件,所以我不知道这是否合适。但是,这个问题确实很普遍,因为文件根本不会加载。我将附上其标题的几张照片:
该文件在第一个字节中还有一个 MZ 标头,一个到 PE 签名的正确链接以及 e_lfanew。在加载程序实际启动之前,加载的调用方Explorer.exe 之间的切换似乎一定存在问题。这是我很迷茫的地方,因为我对启动图像加载器之前发生的过程的那一步一无所知。


