#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 предоставила набор функций для управления перенаправлением:
Wow64DisableWow64FsRedirection
MSDN предоставляет ДЕМОНСТРАЦИОННУЮ версию, на которую вы можете ссылаться
Комментарии:
1. В качестве альтернативы используйте
SysNative
для доступа к 64-разрядному каталогу System32 из процесса WOW64.