Несекрет что можно скрыть ldr от любопытных tasklist'ов с помощью следующего нехитрого кода: Код (Text): local Protect:ULONG,ProtectBaseAddress:PVOID,ProtectBufferLength:ULONG assume fs:nothing mov eax,fs:[TEB.Peb] mov eax,PEB.Ldr[eax] mov ProtectBaseAddress,eax mov ProtectBufferLength,5 lea eax,Protect push eax push PAGE_NOACCESS lea eax,ProtectBufferLength push eax lea eax,ProtectBaseAddress push eax push -1 call ZwProtectVirtualMemory Но дело в то что моей проге потом могет понадобится обращаться к ldr. Самый оптимальный вариант наверное хукнуть KiUserExceptionDispatcher и в своём диспетчере обработать исключение. Вот это и хочу узнать, как узнать что ислючение произашло именно в этом месте и обращение было локально ? Или могет есть более простые способы сокрытия ldr?
Релоад селекторов и пошаговое исполнение обратившейся к загрузчику инструкции. Память под лдр вообще освободить(очистить).
Не знаю что такое "Релоад селекторов" и как реализовать пошаговое исполнение. Нуна более доступная к простым смертным инфа
Выделяем память и копируем туда весь блок данных загрузчика, создаём дескриптор в LDT, базу которого указываем равной адресу выделенной памяти под копию загрузчика. Освобождаем оригинальную память загрузчика(лучше в PEB.Ldr забить указатель, за пределами юзермодного ап), так как он в хипе, желательно не освобождать. При обращении к загрузчику возникнет исключение STATUS_ACCESS_VIOLATION, извлекаем адрес, к которому произошло обращение, если он не в диапазоне памяти лоадера пропускаем(Chain) исключение. Иначе вычисляем смещение в блоке лоадера, отняв от адреса к которому произошло обращение адрес блока данных лоадера. Это будет смещением в копии блока. Подменяем в контексте селектор данных(обращение черех Ds) на наш и взводим TF в флажках, после чего выполняем возврат(NtContinue). Инструкция будет выполнена есчо раз, но обращение произойдёт к нашему блоку(так как адресуется селектором). После исполнения этой инструкции возникнет трассировочное исключение, в нём нужно восстановить предыдущее значение селектора.