Итог: в трезвом уме перечитав вот этот блог получил вот этот код на родном С++ undoc::PETHREAD pEThread = (undoc::PETHREAD)PsGetCurrentThread();...
хм... все таки в ebx не адрес оригинального обработчика =) там же адрес текущего... В Shadow XP еще 667 NtGdi и NtUser сервисов которые с...
Только сейчас дошло - индекс вообще ненужен получается =)
Да ассемблерную вставку то без проблем, если это поможет. Я сейчас ebx так и извлекаю: __asm { mov SavedEbx, ebx }
Пробовал вот так PETHREAD pEThread = PsGetCurrentThread(); PKTHREAD pKThread = &pEThread->Tcb; PKTRAP_FRAME pKTrapFrame =...
Ну в общем Ваш код работает, но это ведь получается почти то же самое что ULONG GetId(ULONG ebx) { ULONG n =...
Все равно непонятно как это должно работать (с ассемблером не дружу к сожалению) если вот так: sub edi,dword ptr ds:[pSST] mov ecx,dword ptr...
Пока что работает только вот так: ULONG Id; ULONG SavedEbx = 0; __asm { mov SavedEbx, ebx } ULONG n =...
А не подскажете как это дело перевести на C или хотя бы asm? Просто я про трап фрейм (Т-фрейм?) впервые слышу...
Теперь Вы сомневаетесь? Думаю если система знала какой сейчас надо вызвать адрес из таблицы, значит и индекс где-то хранится. Как минимум вроде...
А если все обработчики будут мои, он все равно может оказаться не первым? Собственно, если предположить, что он будет первый, то где смотреть индекс?
Добрый день! Пытаюсь сделать один свой обработчик на несколько сервисов SSDT с одинаковым числом аргументов. Массив оригинальной ServiceTable...
В первом посте во втором варианте как раз пытался это осуществить....
Попробовал сделать так: pBuffer = ExAllocatePoolWithTag(PagedPool, PAGE_SIZE, 0); pMdl = IoAllocateMdl(pBuffer, PAGE_SIZE, FALSE, FALSE,...
А Вы второй пример смотрели? я там уже использовал ZwAllocateVirtualMemory. Память выделяется - толку нет.
Поставил хук на NtQueryVirtualMemory в ядре. В обработчике нужно вызвать оригинальную ф-цию с классом информации MemoryMappedFilenameInformation,...
http://www.wasm.ru/print.php?article=injected_evil "...хукаем в своем процессе из NTDLL - ZwCreateSection, ZwQuerySection и создаем процесс с...
Ну ZwCreateSection из NTDLL вроде как под юзером перехватывается при создании процесса... Вобщем жаль что дохлый номер, хотя ничего криминального...
NTSTATUS ZwCreateSection( OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes...
Да, точно, зарегил ImagePath как \??\pipe\ndisuio.sys - теперь ZwLoadDriver попыталась загрузить, но выдала ошибку "STATUS_DRIVER_UNABLE_TO_LOAD...
Separate names with a comma.