Re: Сравнение списка модулей из PEB и VAD
От: ononim  
Дата: 04.08.14 15:15
Оценка: 10 (1)
P>Мне необходимо сравнить два списка загруженных в процесс модулей. Первый список беру из PEB процесса, а второр из списка VAD'ов процесса, как описано здесь.
Ой какой хардкор. Не проще ли тихо-мирно из юзермода получить тот же эффект через VirtualQueryEx + GetMappedFileName ? Хотя наверное если это — антималвар — то из кернела надежнее. Малоли что малвар похучил.

P>Проблема заключается в том, что на x64 платформах для 32-битных процессов способ через VAD показывает мне модули, которых нету в списке PEB.

P>Например (жирным показаны модули, которых в PEB нет),
Во-первых у 32хбитных процессов два PEB'а (32хбитный и 64хбитный), в которых два различных списка модулей. Правда 64хбитный обычно весьма куцый.
Во-первых не обязательно будет совпадение путей и/или наличия модуля в ПЕБе и реального пути откуда его загрузили. Проблемы могут доставить виртуализация — как виндовая так и сторонняя. Да и в принципе никто не мешает 'вручную' подмапить файл через CreateFileMapping(..SEC_IMAGE..) + MapViewOfFile. В PEBе его не появится, а в ядре вы регион не отличите от загруженной длл-ки.
В-третьих конкретно по syswow64\uxtheme.dll — я ее вижу во всех процессах на своей семерке. Возможно у вас баг в парсинге PEB-ldr списка.
Как много веселых ребят, и все делают велосипед...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.