Как узнать "родителей" функции У меня есть длл которая устанавливает хуки.Желательно перехватывать конечную функцию а не ее заглушки чтобы иметь контроль над всеми функциями которые входят как бы в одно семейство.Т.е. по аналогии с VirtualAlloc->NtVirtualAlloc->ZwVirtualAlloc Есть ли какойто метод это узнать или где про это можно узнать.Мне пока нужны функции для работы с виртуальной памятью,реестром и файловыми операциями. Заранее спасибо.
Начнем с того, что NtVirtualAlloc == ZwVirtualAlloc, Это даже не сиамские близнецы, не то что "предок/потомок". Есть замечательный метод это узнать - заглянуть в дизассемблер. Вас явно интересует и еще что-то, но что именно - из вашего вопроса не очень понятно.
_Juicy Начнем с того, что NtVirtualAlloc == ZwVirtualAlloc В принципе да,но все таки:Из пользовательского режима,системные сервисы вызываются из NTDLL(выполняющейся в режиме пользователя), которая экспортирует NtXXX заглушки аналогичные ZwXXX. Меня интересует кто при вызове функции (предположим CreateFile),будет выполнять ее последней из доступных в kernel или user уровне.Пример:CreateFile->ZwCreateFile->IoCreateFile.Как узнать что именно IoCreateFile будет окончательным обработчиком.
В моей ntdll.dll таких функций нет. Что до Nt==Zw - я бы был поосторожнее со знаком равенства. Они вовсе не равны. Как узнать что именно IoCreateFile будет окончательным обработчиком А никак
Да, пожалуй скорее это будет Код (Text): ; Exported entry 75. NtAllocateVirtualMemory ; Exported entry 723. ZwAllocateVirtualMemory public ZwAllocateVirtualMemory
Здрасьте, приехали. Я ж не говорю о РУЧНЫХ методах. Есть и сырцы, есть и IDA - проблем-то никаких. Ты мне АВТОМАТИЧЕСКИ узнай, что для данной конкретной API-функции самым последним звеном будет именно эта еще одна API-функция во-о-он в том модуле. Ну как?
хукай все функции А ну-ка, ну-ка. Очень хотелось бы мне увидеть как можно хукнуть неэкспортируемую модулем функцию.