Почему пути к файлам модулей в WOW64 PEB указывают на x64 версии модуля?

#windows #winapi

#Windows #winapi

Вопрос:

Я вручную анализирую PEB-файлы процесса WOW64, чтобы загрузить в него модули, и мне было интересно, почему путь к файлу (FullDllName) указывает на x64 версию модуля.

Например, ntdll.dll Путь к файлу (взятый из WOW64 PEB) указывает на DLL в системной папке, которая должна быть x64 ntdll.dll однако я ожидал бы, что путь к файлу будет указывать на x86 ntdll.dll в папке SysWOW64?

Почему это происходит?

Комментарии:

1. перенаправление файловой системы wow64. при включении, по умолчанию, папка system32 действительно перенаправляется на syswow64 . итак, с точки зрения 32bit — эти пути к dll действительно указывают на syswow64

2. Они проделали большую работу, чтобы все выглядело так, как будто вы работаете на 32-разрядной ОС. Виртуализация winapi и получение результатов «похоже на это». Но, конечно, эта проблема где-то заканчивается, «ручной синтаксический анализ PEBS» — это то, что они не могут подделать. Для этого используйте обычный winapi, например CreateToolhelp32Snapshot() с опцией TH32CS_SNAPMODULE32.

Ответ №1:

В системе x64 некоторые специальные каталоги и разделы реестра разделены на две отдельные части. Для файловых систем %systemroot%system32 каталог зарезервирован для 64-разрядных файлов, а 32-разрядные файлы перенаправляются в %systemroot%SysWOW64 каталог. Другими словами, все 32-разрядные программы обычно отображаются только в %systemroot%SysWOW64 каталоге. Любая 32-разрядная программа, пытающаяся получить доступ к %systemroot%system32 каталогу, будет перенаправлена в %systemroot%SysWOW64 каталог. Это поведение по умолчанию, если поток программы явно не указывает, что механизм перенаправления должен быть отключен.

Иногда вам нужно закрыть перенаправление, когда вам нужно получить доступ к папке system 32, поэтому MSDN предоставила набор функций для управления перенаправлением:

Wow64EnableWow64FsRedirection

Wow64DisableWow64FsRedirection

Wow64RevertWow64FsRedirection

MSDN предоставляет ДЕМОНСТРАЦИОННУЮ версию, на которую вы можете ссылаться

Комментарии:

1. В качестве альтернативы используйте SysNative для доступа к 64-разрядному каталогу System32 из процесса WOW64.