Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сплайсинг функций ядра на Delphi ? [D5, Win95/98]


Terrible ©   (2002-09-27 17:35:00) 

Кто осуществлял сплайсинг (установка обработчиков API функций) ядра на делфи. Есть примр на асме, может кто уже этим занимался? Поделитесь плиз примерчиком. Очень нужно для хорошего дела.


Digitman   (2002-09-30 17:32:00) [1]


> функция, которая пишется в область памяти KERNEL32.DLL


Это не так. Исп.код перехвата внедряется не в ВАП, отведенное под KERNEL32.DLL в целевом процессе, а во вновь выделяемый блок своб.вирт.памяти в этом процессе (см. VirtualAllocEx())

После того, как блок был распределен в целевом ВАП, в него записываются данные, содержащие исп.код перехвата (см. WriteProcessMemory)

После успешного внедрения исп.кода в ВАП целевого процесса необходимо стартовать удаленный кодовый поток в цел.процессе (см. CreateRemoteThread), который собственно и исполнит инструкции внедренного в целевое ВАП исп.кода


Terrible   (2002-09-30 17:06:00) [2]

Ну, на самом деле технология была найдена именно в самоучителях по написанию вирусов, но использовать её хотим для значительно более мирных целей.
Ну всётаки, не уж то никто таким не занимался и не поможет ?


Viktor Kushnir   (2002-09-28 08:20:00) [3]

вирус :)))


Terrible   (2002-09-27 18:40:00) [4]

Видел примеры на Delphi, когда хукают функцию для конкретного приложения (изменение таблицы импорта).
А тут надо именно глобально хукать, так что б для всех приложений. На асме есть пример, но там функция, которая пишется в область памяти KERNEL32.DLL тоже написана на асме (когда они точно имеют код, его длину и пр., да и вообще процедурка обработки там примитвная).
А вот надо вставить к примеру целую процедуру вместо функции CreateProcess, провести необходимые проверки, а потом вызвать оригинальный CreateProcess.


Digitman   (2002-09-27 18:34:00) [5]

а что тебе непонятно конкретно ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо