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

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

Принудительный вызов Recv в чужом приложении [D6, D7, Win2k, WinXP]


ient ©   (2007-09-12 10:00:00) 

Произвожу перехват recv из ws2_32 столкнулся с проблеммой когда нужно передать подопытному приложению порцию данных, решил простым добавлением в buff нужных данных.
все бы прекрасно.
но проблемма в том что моя порция данных "дойдет" до приложения если только если ему "легально" отправляются данные от серверной части.
мне же желательно заставить приложение вызывать recv по моему желанию.

приложение использует сокет в неблокирующем режиме.

роясь по ScktComp столкнулся с сообщением
CM_SOCKETMESSAGE и довольно интересной структурой TCMSocketMessage.
наивный вопрос следующего характера, возможно ли с помошью sendmessage() заставить приложение вызвать recv если да то каким образом передать структуру TCMSocketMessage в обработчик данного сообщения.


Сергей М.   (2007-09-13 08:20:00) [1]


> зацикливаться на CM_SOCKETMESSAGE себе дороже


Эт точно)
Тупиковый путь.

Можно поступить еще так - перехватить коннект и перенаправить соединение на свой маппер прямо в коде жертвы.


Slym   (2007-09-13 04:23:00) [2]

Сергей М. ©   (12.09.07 14:12) [15]
Зато универсально - нет необходимости определять что там за сокет - блок, неблок с окошком, неблок с Event, неблок на Overlapped, как файл (ReadF/WriteF в конечном итоге всеравно Recv/Send ), CompletionPort
вариантов множество и зацикливаться на CM_SOCKETMESSAGE себе дороже


Сергей М.   (2007-09-12 14:12:00) [3]


> Slym ©   (12.09.07 13:38) [13]


Это если оно позволит себя "натравить")

А иначе все равно перехват ф-ций нужно делать. И получается двойной геморрой - писать модуль внедряемого для перехвата кода да еще модуль кода маппера.


Slym   (2007-09-12 13:38:00) [4]

забыл добавить: делаешь грязное дело в нужный момент


Slym   (2007-09-12 13:38:00) [5]

Сергей М. ©   (12.09.07 13:12) [12]
приложение-жертвы натравливаешь на фиктивный сокет мапера и в мапере без всяких перехватов делаешь грязное дело


Сергей М.   (2007-09-12 13:12:00) [6]


> Slym ©   (12.09.07 12:44) [10]


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


Сергей М.   (2007-09-12 13:08:00) [7]


> учитывая что CM_SOCKETMESSAGE обрабатывается в TCustomWinSocket.


Ну да, обрабатывается. И что ? Ты уверен, что приложение-жертва использует этот класс ?


Slym   (2007-09-12 12:44:00) [8]

не проще портмап сделать и уже в нем подменять данные


ient   (2007-09-12 12:42:00) [9]

>Сергей М. ©   (12.09.07 11:22) [8]
учитывая что CM_SOCKETMESSAGE обрабатывается в TCustomWinSocket....

>ient   (12.09.07 10:30) [5]
"соответственно интересует как должно выглядеть решение для приложения которое "использует именно TClientSocket &" (TCustomWinSocket. если быть точнее.)"
интересует сейчас именно это.


Сергей М.   (2007-09-12 11:22:00) [10]


> ient   (12.09.07 11:20) [7]


Тогда открой исп.файл приложения в любом подходящем ресурс-эксплорере и убедись, что там фигурирует именно TClientSocket и только TClientSocket и ничто иное.


ient   (2007-09-12 11:20:00) [11]

приложение разработано написано в д5. 4 года назад. сурсы утеряны.


Сергей М.   (2007-09-12 10:57:00) [12]


> почему вас так интересует вопрос про среду разработки


Потому что твоя идея с CM_SOCKETMESSAGE заранее обречена на провал, если приложение не использует TClientSocket или разработано не в Делфи/ВСВ


ient   (2007-09-12 10:30:00) [13]

фраза про блокирующие сокеты сказана для того чтобы дать понять что recv не блокирует управление. а просто возвращает 0 при отсутствии данных, ну в данном случае приложение не вызывает recv при отсутсвии данных. что очень напоминает алгоритм реализованный в ScktComp, вот и соответственно интересует как должно выглядеть решение для приложения которое "использует именно TClientSocket &" (TCustomWinSocket. если быть точнее.)

+ почему вас так интересует вопрос про среду разработки ?


Сергей М.   (2007-09-12 10:21:00) [14]


> Неблокирующие сокеты есть только в TClientSocket


Неблокирующие сокеты могут использоваться в любомкомпоненте, ориентированном на разработку под Windows-платформу.

И вообще, на основании чего ты уверен, что приложение это разработано в среде Делфи/ВСВ ?


ient   (2007-09-12 10:11:00) [15]

(поправка.)
Есть => Реализованы/используются


ient   (2007-09-12 10:10:00) [16]

Неблокирующие сокеты есть только в TClientSocket  0.о ?


Сергей М.   (2007-09-12 10:05:00) [17]


> приложение использует сокет в неблокирующем режиме


С чего ты так уверен, что приложение использует именно TClientSocket &


Наверх

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