You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何CreateFileA在Windows XP正常运行,在Windows 10却调用失败?

Windows 10下CreateFileA调用返回ERROR_FILE_NOT_FOUND的排查与解决

我正在用OllyDbg做逆向工程练习,遇到一段调用CreateFileA的代码:

00402D71  |. 6A 00          PUSH 0                                   ; /hTemplateFile = NULL
00402D73  |. 68 80000000    PUSH 80                                  ; |Attributes = NORMAL
00402D78  |. 6A 03          PUSH 3                                   ; |Mode = OPEN_EXISTING
00402D7A  |. 6A 00          PUSH 0                                   ; |pSecurity = NULL
00402D7C  |. 6A 00          PUSH 0                                   ; |ShareMode = 0
00402D7E  |. 68 00000080    PUSH 80000000                            ; |Access = GENERIC_READ
00402D83  |. FF75 F0        PUSH DWORD PTR SS:[EBP-10]               ; |C:\Windows\system32\eLearnRE#5.dat
00402D86  |. E8 DF642300    CALL <JMP.&KERNEL32.CreateFileA>         ; \CreateFileA

在Windows 10系统中,我已经创建了eLearnRE#5.dat文件,且确认NTFS权限允许读取,但调用后返回0xFFFFFFFF,错误码为ERROR_FILE_NOT_FOUND(00000002)。

我尝试过以下操作但未解决问题:

  • 从OllyDbg中复制粘贴文件名避免拼写错误
  • 在记事本中逐字符对比文件名检查拼写
  • 修补进程内存尝试读取C:\temp\test.txt(怀疑系统目录下的文件有特殊限制)
  • 向文件中写入数据,避免空文件导致问题
  • 以管理员身份运行OllyDbg

该操作在Windows XP中完全正常,为何在Windows 10中失败?


核心原因:32位进程的文件系统重定向

Windows 10 64位系统中,32位进程访问C:\Windows\system32目录时,会被系统自动重定向到C:\Windows\SysWOW64目录——这是系统为兼容32位程序设计的机制。

你在真实的system32目录下创建了文件,但OllyDbg默认是32位程序(大部分逆向场景用的是32位版本),所以它实际访问的是SysWOW64目录,而这个目录里并没有你创建的eLearnRE#5.dat,因此返回ERROR_FILE_NOT_FOUND。

Windows XP没有这个重定向机制,32位进程可以直接访问system32目录,因此操作正常。

解决方法

  1. 将文件放到SysWOW64目录
    把eLearnRE#5.dat复制到C:\Windows\SysWOW64下,32位的OllyDbg就能找到该文件。

  2. 禁用文件系统重定向
    在调用CreateFileA之前,调用Wow64DisableWow64FsRedirection函数禁用重定向,调用完成后再用Wow64RevertWow64FsRedirection恢复。你可以在OllyDbg中手动注入这段代码,或者修改目标程序的逻辑。

  3. 使用64位版本的OllyDbg
    如果目标程序是64位的,直接用64位OllyDbg调试,64位进程不会触发文件系统重定向,可以直接访问system32目录。

  4. 使用绝对路径的替代写法
    可以用C:\Windows\Sysnative路径替代C:\Windows\system32,这个路径是系统预留的,允许32位进程直接访问64位的system32目录。你可以修改进程内存中的路径为C:\Windows\Sysnative\eLearnRE#5.dat再测试。

内容的提问来源于stack exchange,提问作者user3280964

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:46:02