Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перехват вызовов функций, Способы перехвата 
:(
    Опции темы
Chingachguk
Дата 15.4.2002, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Что я вроде придумал по этому поводу ? ж)

Пусть есть некотрое начало DLL, например, такое:

@@DLL_ENTRY:

push ebp
mov ebp,esp
mov eax,[ebp+4]
; ...

и некоторый вызов ее произошел с точки:

@@Call_POINT:

call @@DLL_ENTRY

@@Next_User_Code:

; ..

О'кей, мы не знаем ДЛЯ произвольной DLL длину инструкций, если только не дизасмить ее, как ты написал выше. Кстати, вышли мне исходняк на си, а тока чтобы был он не более 50-100 кил, ибо в ящик не влезет он мой ;)

Итак, запомним 5 байт от начала (c push ebp) - или столько ровно, чтобы на место этих байт воткнуть команду call OUR_PROC:

@@DLL_ENTRY:
call OUR_PROC
; Что-то, оставшееся от команды и т.д.

Очевидно, при вызове DLL call разом перекинет нас в OUR_PROC.
Что же мы будем делать в ней ? Как выполним деформированный код ? :

OUR_PROC:
push ebp
mov ebp,esp ; Получим указатель на стек, там адрес возврата в
; @@Call_POINT
; Теперь мы воccтановим код по адресу @@DLL_ENTRY - ведь он
; сейчас разрушен врезкой команды call OUR_PROC
; Допустим, код мы сохранили в ячейке DLLSaveCode
pushad ; Все регистры сейвим
pushfd ; Флаги тоже
mov esi,offset DLLSaveCode
mov edi,offset @@DLL_ENTRY
mov ecx,5
rep movsb ; Восстановили код DLL
; Теперь нам надо грамотно вернуться в точку DLL_ENTRY
; В стеке по адресу [ebp] валяется код возврата на 5 байт дальше
; чем нам надо, 5 байт = размер call OUR_PROC
sub dword ptr [ebp],5 ; Вернемся назад, в DLL_ENTRY
; Так, а как же мы В СЛЕДУЮЩИЙ РАЗ получим управление - ведь команда
; call OUR_PROC замещена ОРИГИНАЛЬНЫМ кодом ?
; А вот как - засунем вместо АДРЕСА ВОЗВРАТА на точку перовго вызова -
; - @@Next_User_Code адрес нашей RET_PROC:
; Сначала сохраним этот адрес:
mov eax,dword ptr [ebp+4] ; Вроде бы он там - надо бы проверить точно ;)
mov FinalRETAddr,eax
; А потом модифицируем стек:
mov dword ptr [ebp+4],offset RET_PROC
; Все, теперь что-то делаем ...
; И выходим - следующая встреча в RET_PROC ;)
popfd
popad
pop ebp
ret

; В эту точку мы попадаем вместо стандартной @@Next_User_Code
RET_PROC:
push ebp
mov ebp,esp
pushfd
pushad
; Все сохранили. Нам нужно опять вбить код команды call OUR_PROC
; в точку @@DLL_ENTRY - это чтоб опять перехватить вызов ;)
; Т.е. забиваем команду call OUR_PROC в тело DLL
mov byte ptr @@DLL_ENTRY,Код_Команды_Call - вроде, 9Ah ?
mov dword ptr @@DLL_ENTRY+1,Ну_там_Смещение_OUR_PROC
; Или что-то в этом духе - пишу в общем смысле
; Теперь вернемся на нужную точку @@Next_User_Code
; Ее адрес мы сохранили выше
; Все по местам - и возврат
popad
popfd
pop ebp
jmp dword ptr FinalRETAddr
FinalRETAddr dd ?

Вот вроде бы и все ;)


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
TAPAKAH
Дата 15.4.2002, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 27.3.2002

Репутация: нет
Всего: нет



Не! Это мы уже проходили :)
Усё верно .., но если у тебя в момент выполнения оригинального кода
запустится эта же функция из другой нити .. то она у тебя не перехватится ...
так как код будет восстановлен... в том то и ж***.
Сишный исходник ща вышлю!
PM MAIL   Вверх
Chingachguk
Дата 17.4.2002, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Да, ты совершенно прав ! ;)

Увы ! А я думал - такая красивая идея ... ;(((

Кстати, мыл так и не дошел - правда, mail.ru не работал в понедельник >..


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
TAPAKAH
Дата 18.4.2002, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 27.3.2002

Репутация: нет
Всего: нет



Знаешь .. может я и туплю .. но я чегой то не могу найти твоё мыло на форуме ..
как отправить письмо с форума нашёл .. а вот где посмотреть куда отправляю неа...
Скажи мыло плз!
PM MAIL   Вверх
Chingachguk
Дата 18.4.2002, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18





--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Mikel
Дата 18.4.2002, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: 1
Всего: 2



Ну дык вы че-нть решили? А то мне тоже эта тема интересна, а если есть исходники, вышлите плиз[email protected]


--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
Mikel
Дата 20.4.2002, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: 1
Всего: 2



Посмотрел я твой исходник, спасибо. Но мне надо изменить для чужого АП. Можете что-нть подсказать?


--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
TAPAKAH
Дата 21.4.2002, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 27.3.2002

Репутация: нет
Всего: нет



Ну вот! Приехали! Почитай постинги ... я ж уже писал .. что для чужого .. то же самое .. используешь SetWindowsHookEx и при инициализации своей библиотеки .. (в которой функция-хук ) проверяешь что она загружена в нужном процессе и вызываешь HookFunction
PM MAIL   Вверх
Mikel
Дата 21.4.2002, 07:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: 1
Всего: 2



Спасибо, попробую.


--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
neutrino
Дата 21.4.2002, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



А мне тоже эта тема интересна, вышлите пожалуйста: [email protected]


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Mikel
Дата 21.4.2002, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: 1
Всего: 2



Лучше выложи её здесь целиком, чтобы не отсылать всем.


--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
Chingachguk
Дата 22.4.2002, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Хочу заметить, что попытка использовать указанные выше принципы снятия запрета на модификацию "системного" кода (kernel32/user32...) будут работать не всегда ...

Я вот пытался открыть доступ на запись в эти DLL ф-цией VirtualProtectEx - и у меня ничего не получалось(возвращалась ошибка). Но собственное приложение я мог открыть на запись. Думал я над этим ... Пока не прочел сегодня, что копирование при записи в 95-х (у меня именно они) не поддерживается ;) А поддерживается только в NT, и, видимо, в 2000 , XP...

to ТАРАКАН: если не секрет, какая у тебя ось была ? :)


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
TAPAKAH
Дата 22.4.2002, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 27.3.2002

Репутация: нет
Всего: нет



Хе хе ! :) У меня 2000 на работе и дома :)
Так что селяви :)
Теперь понятно почему у тебя не пахало :)
Ну чтож .. будем знать! А ты где это прочёл .. ???
А под 98 пахать будет ???
PM MAIL   Вверх
Chingachguk
Дата 23.4.2002, 02:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Прочел в "Технике сетевых атак" Криса Касперски ... ;)
Купил ... уже вчера ;)
Под 98 пахать не будет, ибо у меня как раз они, родимые ...


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
TAPAKAH
Дата 23.4.2002, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 27.3.2002

Репутация: нет
Всего: нет



Во блин! :) Ты меня огорчаешь ..
А ты случайно не прочёл там как это можно обойти ????
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0703 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.