Почему пути к файлам модулей в WOW64 PEB указывают на 64-разрядные версии модуля? - PullRequest
0 голосов
/ 28 марта 2019

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

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

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

1 Ответ

0 голосов
/ 28 марта 2019

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

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

Wow64EnableWow64FsRedirection

Wow64DisableWow64FsRedirection

Wow64RevertWow64FsRedirection 1091021 *

MSDN предоставляет DEMO, к которому вы можете обратиться

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...