![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 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. |
|||
|
||||
| TAPAKAH |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 27.3.2002 Репутация: нет Всего: нет |
Не! Это мы уже проходили :)
Усё верно .., но если у тебя в момент выполнения оригинального кода запустится эта же функция из другой нити .. то она у тебя не перехватится ... так как код будет восстановлен... в том то и ж***. Сишный исходник ща вышлю! |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Да, ты совершенно прав !
Увы ! А я думал - такая красивая идея ... ;((( Кстати, мыл так и не дошел - правда, mail.ru не работал в понедельник >.. -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| TAPAKAH |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 27.3.2002 Репутация: нет Всего: нет |
Знаешь .. может я и туплю .. но я чегой то не могу найти твоё мыло на форуме ..
как отправить письмо с форума нашёл .. а вот где посмотреть куда отправляю неа... Скажи мыло плз! |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
-------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| Mikel |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 882 Регистрация: 30.3.2002 Где: Саратов Репутация: 1 Всего: 2 |
Ну дык вы че-нть решили? А то мне тоже эта тема интересна, а если есть исходники, вышлите плиз[email protected]
-------------------- ...so remember, it's better to burn out than to fade away |
|||
|
||||
| Mikel |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 882 Регистрация: 30.3.2002 Где: Саратов Репутация: 1 Всего: 2 |
Посмотрел я твой исходник, спасибо. Но мне надо изменить для чужого АП. Можете что-нть подсказать?
-------------------- ...so remember, it's better to burn out than to fade away |
|||
|
||||
| TAPAKAH |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 27.3.2002 Репутация: нет Всего: нет |
Ну вот! Приехали! Почитай постинги ... я ж уже писал .. что для чужого .. то же самое .. используешь SetWindowsHookEx и при инициализации своей библиотеки .. (в которой функция-хук ) проверяешь что она загружена в нужном процессе и вызываешь HookFunction
|
|||
|
||||
| Mikel |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 882 Регистрация: 30.3.2002 Где: Саратов Репутация: 1 Всего: 2 |
Спасибо, попробую.
-------------------- ...so remember, it's better to burn out than to fade away |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
А мне тоже эта тема интересна, вышлите пожалуйста: [email protected]
-------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| Mikel |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 882 Регистрация: 30.3.2002 Где: Саратов Репутация: 1 Всего: 2 |
Лучше выложи её здесь целиком, чтобы не отсылать всем.
-------------------- ...so remember, it's better to burn out than to fade away |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Хочу заметить, что попытка использовать указанные выше принципы снятия запрета на модификацию "системного" кода (kernel32/user32...) будут работать не всегда ...
Я вот пытался открыть доступ на запись в эти DLL ф-цией VirtualProtectEx - и у меня ничего не получалось(возвращалась ошибка). Но собственное приложение я мог открыть на запись. Думал я над этим ... Пока не прочел сегодня, что копирование при записи в 95-х (у меня именно они) не поддерживается to ТАРАКАН: если не секрет, какая у тебя ось была ? -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| TAPAKAH |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 27.3.2002 Репутация: нет Всего: нет |
Хе хе ! :) У меня 2000 на работе и дома :)
Так что селяви :) Теперь понятно почему у тебя не пахало :) Ну чтож .. будем знать! А ты где это прочёл .. ??? А под 98 пахать будет ??? |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Прочел в "Технике сетевых атак" Криса Касперски ...
Купил ... уже вчера Под 98 пахать не будет, ибо у меня как раз они, родимые ... -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| TAPAKAH |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 27.3.2002 Репутация: нет Всего: нет |
Во блин! :) Ты меня огорчаешь ..
А ты случайно не прочёл там как это можно обойти ???? |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |