Здраствуйте. Скажите пожалуста как можно получить имя функции по её номеру в сдт. Тоесть к примеру у меня есть номер функции в Сустем сервис тейбл. Я знаю в какой Сдт она находится. Как получить имя функци ? Ешё вопрос - как получить аддресс KeServiceDescriptorShadowTable ? Спасибо.
Путем сканирования экспортов ntdll и поиска функции с нужным номером. Во-первых, не KeServiceDescriptorShadowTable, а KeServiceDescriptorTableShadow А вот и код: Код (Text): PSERVICE_DESCRIPTOR_TABLE GetKeServiceDescriptorTableShadow() { PUCHAR cPtr, pOpcode; ULONG Length; for (cPtr = (PUCHAR)KeAddSystemServiceTable; cPtr < (PUCHAR)KeAddSystemServiceTable + PAGE_SIZE; cPtr += Length) { if (!MmIsAddressValid(cPtr)) break; Length = SizeOfCode(cPtr, &pOpcode); if (!Length || (Length == 1 && *pOpcode == 0xC3)) break; if (*(PUSHORT)pOpcode == 0x888D) { return *(PVOID *)(pOpcode + 2); } } return NULL; }
Я просматривал экспорты нтдлл и они не совпадают с номерами. В нтдлл вроде бы содержатся переходники и реальные функции. Веротяно по этому не совпадает. А этот Тайбл шадов нильзя никак засунуть в импорт ?
Блин, а то что вначале каждой соответствующей ntdll функции стоит mov eax, number тебе ни о чем не говорит? Ну дык ты головой подумай, как можно засунуть в импорт то, что не экспортуруется. Сначала как минимум надо создать соответствующий экспорт.