![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как перехватить API функции (Connect, Bind) и изменить их парамет [D7, WinXP]
MALAN © (2009-02-25 14:25:00)Некий процесс в системе хочет соединиться с XXX.XXX.XXX.XXX:YYYYY (IP:PORT), а для этого вызывает команду Connect с IP адресом и номером порта. Необходимо чтобы программа перехватчик изменила параметры команды Connect так чтобы если YYYYY = 25, то соединение перенаправлялось на локальный порт который слушает программа перехватчик, а отттуда уже изменённые данные отправлялись бы куда надо.
Перерыл много инфы, и хотя задача вроде бы не сложная, но в силу своей тупости и малого опыта ничего конкретного сделать не смог.
Насколько я понял есть несколько вариантов (изменение Winsock.dll, сплайсинг), наиболее вменяемый это внедрение специальной DLL во все создаваемые процессы ( http://www.rsdn.ru/article/baseserv/InjectDll.xml).
Но как должна выглядеть эта DLL, чтобы она могла модифицировать комманду Connect, а оригинальную отправлять программе перехватчику?
Сергей М. (2009-02-27 15:55:00) [21]
> а остальное?
ModuleHandle - хэндл модуля ws2_32.dll в АП процесса-жертвы.
NewProcedureAddress - адрес твоей собственной функции, куда будет передано управление в рез-те вызова жертвой ф-ции Connect
RestoreDATA - это, видимо, указатель на область данных в твоей DLL, куда при сплайсинге будет сохранен оригинальный фрагмент контекста перехватываемой тобой функции
MALAN (2009-02-27 15:37:00) [22]Palladin © (27.02.09 15:25) [28]
>> MALAN © (27.02.09 14:18) [26]
>Я спорю что ли? )
>Сыр и сметана - оба продукта молочные. ) Однако ни кто же не >утверждает, что сыр это по сути сметана, на уровне исходных материалов )
>Если два чего то растут из одного места - низя утверждать что одно есть, >по сути, второе и наоборот.
Короче "медведь и панда"(c).... я тебя понял:)
MALAN (2009-02-27 15:34:00) [23]Сергей М. © (27.02.09 14:51) [27];
Может тогда всё-таки поможешь?:)
Нарыл библиотеку для перехвата, но вот как запустить одну из функций (вообщем-то самую главную, установка зука методом сплайсинга) не понял:
function SetProcedureHook(ModuleHandle:HMODULE;ProcedureName:PChar;NewProcedureAddress:Po inter; RestoreDATA:PFunctionRestoreData):Boolean;
Что в параметрах писать? ProcedureName вроде как "Connect", а остальное?
Palladin (2009-02-27 15:25:00) [24]
> MALAN © (27.02.09 14:18) [26]
Я спорю что ли? )
Сыр и сметана - оба продукта молочные. ) Однако ни кто же не утверждает, что сыр это по сути сметана, на уровне исходных материалов )
Если два чего то растут из одного места - низя утверждать что одно есть, по сути, второе и наоборот.
Сергей М. (2009-02-27 14:51:00) [25]
> MALAN © (27.02.09 14:18) [26]
А не надо нам тут америки открывать)
Да, по мере продвижения к вершине OSI-модели грани разничий в функциональности файрволов и прокси-сервисов становятся все более малоразличимы.
Только в твоем случае тебя это уже никак не касается - интересующая тебя приблуда не имеет отношения к межсетевомувзаимодействию.
MALAN (2009-02-27 14:18:00) [26]Palladin © (27.02.09 14:09) [25]
>> Если уж на то пошло то прокси-сервер это и есть фаерволл
>> уровня приложений
>Ага, а сыр - это сметана )
А ты попробуй ввести в поиск "брандмауэр сетевого сеансового прикладного уровня", узнаешь много нового:)
Palladin (2009-02-27 14:09:00) [27]
> Если уж на то пошло то прокси-сервер это и есть фаерволл
> уровня приложений
Ага, а сыр - это сметана )
Сергей М. (2009-02-27 14:06:00) [28]
> прокси-сервер это и есть фаерволл
Прокси это прокси, а файрвол это файрвол.
У них оченьразные задачи.
> Гора родила мышь
А ты что хотел ?)
MALAN (2009-02-27 11:54:00) [29]Удалено модератором
Примечание: дубль
MALAN (2009-02-27 11:54:00) [30]Сергей М. © (27.02.09 09:03) [20]
>Дальше либо надежное, но сложное в реализации решение с NDIS Miniport->драйвером либо ненадежное и не менее сложное решение с драйвером, >инжектирующим dll-перехватчик.
Гора родила мышь;)
Anatoly Podgoretsky © (27.02.09 09:51) [21]
>На самом деле именно так и нужно, а файрволом надо запретить выход на >XXX.XXX.XXX.XXX:25, только на zzz.zzz.zzz.zzz:25 при том обязательно с >аутентификацией. Именно почти так у меня и сделано, мне просто не >нужно изменение.
Что то мне подсказывает что почтовые программы в этом случае необходимо будет перенастраивать.
P.S.Если уж на то пошло то прокси-сервер это и есть фаерволл уровня приложений
Anatoly Podgoretsky (2009-02-27 09:51:00) [31]
> Его почтовый трафик заботит, а не гипертекстовый..
Так, но вот что он написал в [4]
> Скорее уж прокси-сервер
На самом деле именно так и нужно, а файрволом надо запретить выход на XXX.XXX.XXX.XXX:25, только на zzz.zzz.zzz.zzz:25 при том обязательно с аутентификацией. Именно почти так у меня и сделано, мне просто не нужно изменение.
Сергей М. (2009-02-27 09:03:00) [32]
> MALAN © (26.02.09 20:54) [18]
> Ну хорошо, напрямую провайдеру
Вот теперьпонятно, что локальный перехват трафика остается единственным решением.
Долго же ты ломался)
> что дальше?
Дальше либо надежное, но сложное в реализации решение с NDIS Miniport-драйвером либо ненадежное и не менее сложное решение с драйвером, инжектирующим dll-перехватчик.
brother (2009-02-27 06:18:00) [33]> Ну хорошо, напрямую провайдеру... что дальше?:)
пиши программу!
MALAN (2009-02-26 20:54:00) [34]Сергей М. © (26.02.09 12:36) [17]
>Причем так до сих пор и партизанит : непонятно как этот хост ходит в >тырнет - то ли прямиком к провайдеру маршрут лежит, то ли через >корпоративный прокси и/или шлюз ..
Ну хорошо, напрямую провайдеру... что дальше?:)
Сергей М. (2009-02-26 12:36:00) [35]
> Anatoly Podgoretsky © (26.02.09 12:28) [16]
Его почтовый трафик заботит, а не гипертекстовый..
Причем так до сих пор и партизанит : непонятно как этот хост ходит в тырнет - то ли прямиком к провайдеру маршрут лежит, то ли через корпоративный прокси и/или шлюз ..
Anatoly Podgoretsky (2009-02-26 12:28:00) [36]> MALAN (25.02.2009 18:20:04) [4]
При (http) прокси сервере ни о каком интернете и речи нет, и даже об локалке, все заканчивается прокси сервером, клиент никуда кроме этой машиные не подключается.
Сергей М. (2009-02-26 09:18:00) [37]
> что должен содержать этот исполняемый код
Вот это самое все необходимое для подготовки он и должен содержать.
Сергей М. (2009-02-26 09:16:00) [38]
> кода, который исполняется автоматически при подключении
> что должен содержать этот исполняемый код
Подготовить все необходимое для гарантированного получения управления при вызове впоследствии тех или иных требуемых API-функций, что же еще ?
MALAN (2009-02-26 08:42:00) [39]>Сергей М. © (26.02.09 08:31) [11]
>Информацию эту несут как раз те самые пакеты.
Кто бы мог подумать:))
>Что значит "как" ?
>Обычно должна выглядеть - DLL она и есть DLL..
Насколько я знаю обычная DLL состоит из набора вызываемых функций, и загрузочного кода, который исполняется автоматически при подключении DLL, вот меня и интересует что должен содержать этот исполняемый код
Сергей М. (2009-02-26 08:32:00) [40]
> как должна выглядеть эта DLL
Что значит "как" ?
Обычно должна выглядеть - DLL она и есть DLL..