![]() |
|
|Ѳорум| |
Комментарии к статье «Перехват API функций в Windows NT (часть 3). Нулевое кольцо.» |
|
relikt /2005-05-16 16:15:17/
Cool
/2005-05-16 16:16:36/
Многа лишнего. КГ/АМ
/2005-05-18 07:36:38/
И администрация ещё думала, выложить эти статьи или нет?
Отличные статьи!
/2005-05-20 01:28:35/
СУПЕР! Молодец Ms-Rem!
Все три статьи.... Правда до много уже давно сам раскопал пару лет назад ;) Я в своё время упорно доказывал, что Delphi тоже нормальный язык и на нём МНОГОЕ можно писать... ;) ----- we'd be glad to see most of you at our page http://www.dotOCA.net
/2005-05-20 14:59:24/
Ну давайте я вставлю свою ложку дёгтя.
Я не спец в этих вещах. Наоборот, очень интересуюсь и изучаю эти статьи сейчас. Отличная информация. Согласен, автор - молодец. Но есть одно но. Помнится на сайте был запрет на маты и другую ненормативную лексику. В статьях я её не встречал. Но вот названия некоторых аттачей. Может быть кто-то это любит, кому-то английский не очень близок и такие слова в диковинку, вроде как круто. А кто-то язык знает почти на уровне второго языка. И такие вещи откровенно коробят. Я не надеюсь, что модераторы сайта не согласились бы с такими названиями аттачей: Погладить загрузку.rar С ДРом вашу стену огня.rar (Надеюсь модераторы поправят мои выражения) (поправил) Ведь можно было бы назвать SpyLogon.rar и KillFire.rar. Поэтому просьба. Нельзя ли изменить или в будущем избегать таких откровенно грубых названий, даже если они и идут на английском языке. А у нас ведь и англоязычные посетители бывают. Им это совсем будет приятно. Итого. Статьи классные и очень познавательные. Просьба продолжать, если будет желание. Просто внимательнее относиться к словам на любом языке.
/2005-05-21 15:24:27/
SolidCode, 5 баллов ;) Мы как-то даже не обратили на это внимания.
/2005-05-26 13:36:06/
Совершенно согласен.
Применение оригинальной лексики идёт в разрез с Дао! Не стоит плевать в просветлённую душу посетителей сайта. Спасибо SolidCode.
/2005-05-29 18:58:15/
Спасибо, Эдмонд.
И извините за те слова.
/2005-06-07 19:58:20/
Статья хорошая, без слов.
Кому интересно на www.rsdn.ru -> Статьи -> Delphi -> Создание драйверов... есть статья про создание KMD драйверов на делфи, но при вызове функций из ntdll.dll у меня возникли проблемы.
/2005-06-09 18:13:35/
super
/2005-07-04 20:18:41/
Respect!
I love Delphi! ;D
/2005-07-09 19:11:00/
Отличная статья,
Я бы хотел узнать можно ли при перехвате API в ядре узнавать из какого процесса она была вызвана. Заранее спасибо P.S. Если не сложно, то ответь на AB-Celitel@yandex.ru
/2005-07-09 19:12:06/
Отличная статья,
Я бы хотел узнать можно ли при перехвате API в ядре узнавать из какого процесса она была вызвана. Заранее спасибо P.S. Если не сложно, то ответь на AB-Celitel@yandex.ru
/2005-07-09 21:57:30/
PsGetCurrentProcessId
/2005-07-10 15:10:22/
Огромное спасибо, но если можно по-подробнее
/2005-07-12 16:16:29/
Приветствую всех!
Я меня прблема, написал драйвер перехватчик из статьи, но на асме. Работает нормально, но не передаётся управление на мою перехватчик-функцию. Ниже привожу кусок кода из моего драйвера, где я думаю возможно ошибка. .data true_addr dd 0 dbg_mes_sethk db "set hook",0 dbg_mes_fromhook db "from hookproc",0 dbg_mes_delhk db "del hook",0 DriverEntry proc local CR0Reg:dword ... ... ... ; Set Hook mov eax,CR0 mov CR0Reg,eax and eax,0FFFEFFFFh mov CR0,eax mov edx,KeServiceDescriptorTable mov eax,dword ptr [edx] ; ntoskrnl. ServiceTable mov ecx,dword ptr [eax+(7ah*4h)] ; true_addr = mov true_addr,ecx ; = KeServiceDescriptorTable-> ; ->ntoskrnl.ServiceTable[7Ah] mov ecx,offset hookprocapi ; KeServiceDescriptorTable-> mov dword ptr [eax+(7ah*4h)],ecx ; ->ntoskrnl.ServiceTable[7Ah] = ; = hookprocapi mov eax,CR0Reg mov CR0,eax invoke DbgPrint, addr dbg_mes_sethk ... ... DriverEntry endp ;****** Функция-перехватчик****** hookprocapi proc invoke DbgPrint, addr dbg_mes_fromhook jmp dword ptr [true_addr] ret hookprocapi endp ;********************** DriverUnload proc local CR0Reg:dword ; del Hook mov eax,CR0 mov CR0Reg,eax and eax,0FFFEFFFFh mov CR0,eax mov edx,KeServiceDescriptorTable mov edx,dword ptr [edx] mov ecx,true_addr mov dword ptr [edx+(7ah*4h)],ecx mov eax,CR0Reg mov CR0,eax invoke DbgPrint, addr dbg_mes_delhk ... ... ... ret DriverUnload endp Так вот, проблема в том, что на hookprocapi вызов не приходит. Если кто-нибудь знает причину (или хотя бы догадывается) прошу написать. Заранее спасибо.
/2005-07-12 16:18:09/
Приветствую всех!
Я меня прблема, написал драйвер перехватчик из статьи, но на асме. Работает нормально, но не передаётся управление на мою перехватчик-функцию. Ниже привожу кусок кода из моего драйвера, где я думаю возможно ошибка. .data true_addr dd 0 dbg_mes_sethk db "set hook",0 dbg_mes_fromhook db "from hookproc",0 dbg_mes_delhk db "del hook",0 DriverEntry proc local CR0Reg:dword ... ... ... ; Set Hook mov eax,CR0 mov CR0Reg,eax and eax,0FFFEFFFFh mov CR0,eax mov edx,KeServiceDescriptorTable mov eax,dword ptr [edx] ; ntoskrnl. ServiceTable mov ecx,dword ptr [eax+(7ah*4h)] ; true_addr = mov true_addr,ecx ; = KeServiceDescriptorTable-> ; ->ntoskrnl.ServiceTable[7Ah] mov ecx,offset hookprocapi ; KeServiceDescriptorTable-> mov dword ptr [eax+(7ah*4h)],ecx ; ->ntoskrnl.ServiceTable[7Ah] = ; = hookprocapi mov eax,CR0Reg mov CR0,eax invoke DbgPrint, addr dbg_mes_sethk ... ... DriverEntry endp ;****** Функция-перехватчик****** hookprocapi proc invoke DbgPrint, addr dbg_mes_fromhook jmp dword ptr [true_addr] ret hookprocapi endp ;********************** DriverUnload proc local CR0Reg:dword ; del Hook mov eax,CR0 mov CR0Reg,eax and eax,0FFFEFFFFh mov CR0,eax mov edx,KeServiceDescriptorTable mov edx,dword ptr [edx] mov ecx,true_addr mov dword ptr [edx+(7ah*4h)],ecx mov eax,CR0Reg mov CR0,eax invoke DbgPrint, addr dbg_mes_delhk ... ... ... ret DriverUnload endp Так вот, проблема в том, что на hookprocapi вызов не приходит. Если кто-нибудь знает причину (или хотя бы догадывается) прошу написать. Заранее спасибо.
/2005-08-18 17:29:47/
Статья отличная (спасибо автору), жаль нашёл только сейчас, но есть серьёзная проблема: где взять DDK сейчас?! ПОМОГИТЕ КТО ЗНАЕТ ПЛИЗ!!!!!!
/2005-10-28 10:33:50/
А перехватывать не кернел апи, MessageBox какойнить, из драйвера нельзя насколько я понял?
/2006-01-19 21:05:24/
Почему-то получаю синий экран в XP SP2 в модуле ring0.pas функции GetSystemEPROCESS на строке
mov esi, [edx + $04] // ActivePsListOffset Кто-нибудь подскажите что не так?
/2006-03-05 02:24:04/
статья отличная
DDK можно скачать тут _http:// club.shelek.com/viewfiles.php?id=2
/2006-05-10 18:51:34/
А статья отличная =)
Igi, у меня тоже была такая проблема, это потомучто функция GetKernelModuleAddress возвращает значение 0, из за того что не находит модуля ntoskrnl.exe. В SP2 зато есть ntkrnlpa.exe, поменяй константу KernelName с 'ntoskrnl.exe' на 'ntkrnlpa.exe' и все будет норм )
/2006-05-10 19:14:58/
во всяком случае при InitType := DRIVER_GATE
/2006-05-10 20:56:14/
а что касается InitType := CALL_GATE, то все запарывается по моему гдето в OpenPhysicalMemory, на ZwOpenSection
Очень бы хотелось знать в чем тут дело и как это исправить. Подскажите плиз :)
/2006-09-02 21:03:11/
очень познавательная статья, аналоги скорее всего просто отсутствуют;)
у меня вот какая проблема: хотелось бы под Си переделать библиотечку Ring0.pas или хотябы некоторые функции для работы в ring0 без драйвера: InstallCallgate(); InitializeCallGate();
/2006-09-10 13:28:20/
перелопатил под си очень криво, но работает, пришлось удалить все команды ret , потомучто вызывали BSOD. Кто-нибудь знает в чём причина и как устранить?
/2006-10-23 14:47:40/
2Delf1n:
а ты про __stdcall не забыл?
/2006-11-27 15:41:00/
перелопатил код перехода в ринг 0 из приложения с использованием модификации GDT под C, не работает. Падает с KMODE_EXCEPTION_NOT_HANDLED на
call far [FarCall] видимо, что-то не так настраиваю, но что, не понятно. Все вроде один к одному передрал. Может сорец куда выложить, чтоб попинали, или в форуме топик создать? Пробовал разобраться, что за действия там производятся, но код заполнения дескриптора шлюза pCurrentGate->selector = 0x08; // ring0 code selector pCurrentGate->offsetLo = (WORD)((DWORD)Ring0CallProc) ; pCurrentGate->offsetHi = (WORD)((DWORD)Ring0CallProc)>>16 ; pCurrentGate->attributes = 0xEC00; как-то не кореллирует с описанием дескриптора, данным в http://wasm.ru/article.php?article=pipm02
/2007-01-23 15:41:03/
странно.
\Device\PhysicalMemory не в каталоге BaseNamedObjects, как и не в каталоге ??, а значит, вроде бы как, должен быть недоступен коду режима пользователя. у меня ZwOpenSection и возвращает STATUS_OBJECT_NAME_NOT_FOUND 0xC0000034L оно и не должно работать. треба чтобы был symlink в каком-нибудь из этих каталогов (на \Device\PhysicalMemory), но его создать можно из kernel mode. получается что не обратиться к \Device\PhysicalMemory из режима пользователя (если только добрый человек не оставил нам symboliclink) и весь метод не должен работать по-определению. но раз автор приводит этот метод, значит я ошибаюсь Но не понимаю, разве вызов ZwOpenSection с \Device\PhysicalMemory пройдет без ошибки ?
/2007-02-02 10:08:37/
Прошу прощения. Все прекрасно работает.
/2008-01-23 08:08:15/
Рэма... возвращайся. нам тебя не хватает.
Смени ник, смени стиль..пофигу... главное возвращайся :)
/2008-04-11 17:38:15/
А что вы так паскаль-то не любите? :)
/2010-03-04 12:27:30/
Класс
Введите логин и пароль, под которыми вы зарегистрированы на θоруме WASM.RU. |