|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Окт 25, 2004 14:52:31 Нужно реализовать аналог GetProcAddress для kernel-mode. Почитал описание pe-формата, набросал код. Нахожу в памяти ntoskrnl.exe, далее в нем ищу PIMAGE_EXPORT_DIRECTORY, нахожу индекс функции по ее имени через AddressOfNames, нахожу ее RVA по индексу через AddressOfFunctions и полученный индекс. Для части функций получаю что-то не то (MyGetProc("Func") != Func). В чем грабли? |
|
|
Дата: Окт 25, 2004 15:44:47 tazo Да в чем угодно! Как не видя код можно сказать в чем проблема ?! |
|
|
Дата: Окт 25, 2004 15:57:42 Все, откопал. По индексу из таблицы имен нужно еще найти ординал функции, который уже является индексом адреса функции в таблице AddressOfFunctions. В pe.txt этот момент не очень понятно освящался :( |
|
|
Дата: Окт 25, 2004 16:56:25 Начиная с 2000 есть MmGetSystemRoutineAddress, котороя сабж в ядре делает, но только для двух модулей: ntoskrnl и hal. |
|
|
Дата: Окт 25, 2004 17:20:53 Начиная с 2000 есть MmGetSystemRoutineAddress, котороя сабж в ядре делает, но только для двух модулей: ntoskrnl и hal. Самое забавное то, что на практике она не подходит. Часто требуется писать драйвер, совместимый начиная с NT4, где ее как раз и нету!!! Однако В w2k очень много вкусных изменений, которых нету в NT4. Если пишешь совместимый с NT4 драйвер, то их не используешь, что получается очень глупо: на подавляющем количестве случаев драйвер будет работать в w2k и выше... Посему рано или поздно приходишь к динамическому поиску адресов... Правда по началу начал было писать kal.sys (kernel abstraction layer, export driver), но понял что GetProc удобнее :) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.064 |