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

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

Как перехватить API функции (Connect, Bind) и изменить их парамет [D7, WinXP]


Страницы:   1 2 3

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..


Страницы:   1 2 3

Наверх

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