Всем привет, нужна функция из ядра которая получает Vad по адресу процесса есть ли такая? и если нет то как можно получить не используя сигнатур и оффсетов
Я как понимаю чтоб вызвать эту функцию надо получить ее адрес тк как она не импортируется Если брать структуру EPROCESS то она у меня пустая
zapolarnik, VAD это интернал механизм, промежуточный не в менеджере памяти, зачем вам это. Код (Text): Direction Type Address Text Down p MiAllocateVirtualMemory(x,x,x,x,x,x,x,x,x)+275 call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p MiCfgMarkValidEntries(x,x,x,x,x,x,x)+EE call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p MiCopyPagesIntoEnclave(x,x,x,x,x,x,x,x)+19F call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p MiGetWorkingSetInfoList(x,x,x,x)+40D call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p MiInitializeEnclave(x,x,x)+D call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p MiProbeAndLockPrepare(x,x,x,x,x,x,x)+E96AE call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p MiReferenceCfgVad(x,x,x)+25 call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p MiSetPriorityVaRanges(x,x,x)+33 call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p MiUnmapLockedPagesInUserSpace(x,x)+42 call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p MiUnmapViewOfSection(x,x,x)+40 call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p MmDeleteTeb(x,x)+2B call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p MmFlushVirtualMemory(x,x,x,x)+6F call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p MmGetFileNameForAddress(x,x)+10 call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p MmProtectVirtualMemory(x,x,x,x,x,x)+96 call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p MmRotatePhysicalView(x,x,x,x,x,x)+9E call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p MmSecureVirtualMemory(x,x,x)+27 call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p MmSecureVirtualMemoryAgainstWrites(x,x,x)+75 call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p MmStoreFreeVirtualMemory(x)+10 call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p NtAreMappedFilesTheSame(x,x)+19 call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p NtAreMappedFilesTheSame(x,x)+3E call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p NtFreeVirtualMemory(x,x,x,x)+106 call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Down p NtGetWriteWatch(x,x,x,x,x,x,x)+204 call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Up p NtResetWriteWatch(x,x,x)+BC call _MiObtainReferencedVad@8; MiObtainReferencedVad(x,x) Прототипы плавают в версиях наверно, нужно парсить автоматикой nt-апи что бы достать апи для вад. Опять же зачем, если есть готовые сервисы, а скрыть через вад что либо в памяти - бессмысленно.
zapolarnik, Это нельзя сделать через вад, тип отображения уходит глубоко в ядро, с ним например работает мп - подгрузка страниц(страничный фаулт) зависит от типа памяти и он не вад описан. Ваша затея бессмысленна. Зачем менять тип памяти. Если нужно то можно переотобразить проекцию, даже в юм. Откуда ты вообще инфу про эти деревья взял ? --- Сообщение объединено, 6 янв 2020 --- Мы немного пообщались в лк, в данной задаче только доктор поможет
я все волишь хочу попробовать одну затею вот и все че тут плохого? Ну даже если не получится и что дальше суть поста то была помочь найти мне vad и все