| Программирование под linux, программирование, языки программирования, книги программирование | На сайте представлена информация про программирование в Интернете и работу |
|
реализация Pop3/Smtp без VCL., Kol Отправка сообщения, локальная сеть Хочу сделать свою аську. Поделитесь опытом., Можно переделать чужую. Игра, Компонент Метод POST, Нада передовать скрипту на сервере данны Убрать и показать иконки на Desctop'е., ---------------------------- Delphi и сотовая связь отправка данных формы Прием и отображение информации, протокол HTTP Узнать город или регион... Indy Mail Demo Отправка SMS?, Как пишутся программы для отправки SMS? Сервер игры, странная штука... Как отключиться от Интернета? FTP сервер без использования спец. компонентов Трафик UDP ???, Как получить??? Вопрос по поводу TStringGrid Как получить список всех компов в сети и... Функция получения результатов POST(GET) в Delphi, Нужна помощь !!! TFileStream, Срочно Как узнать?, IP или Нет Эмулятор сети, D7 отлов пакетов плчты в интернет Proxy и DirectPlay, Реально ли на Delphi написать http прокс Как Вы относитесь к курящим девушкам? Узнать IP, TIdTCPServer Отловить все ошибки TServerSocket Как сделать TexOut прозрачным?, есть ли transparent отправка почты без Outlook Express IHtmlDocument2, activeElement, Как найти следующий после activeElement help ! Kak sozdat server dlya inerneta ? Помогите написать чат для локалки, Перерыла весь Инет, но ничего дельного.. Проблема с Client Socket, Server Socket Нужна инфа по InterWeb Отправка почты Indy SMTP Client протоколы почтовых серверов Ошибка при обращении к web-сервису Звук системным динамиком... Кол - во байт через порт Вопрос по названию интерфейса !, MS TCP Loopback interface XModem, XModem, YModem TCppWebBrowser и фокус Узнать имена подключившихся процессов. Количество переданныхи полученных байт, Помогите !!! У меня проблемма с Indy UDP, IdUDPServer1UDPRead не работает Работа с TIdTCP, помагите разобратся Перехват информации с сетевого порта Как зная IP определить адрес help-rus Хочется перейти к новому и интересному Отправка переменной через тсп, без постоянного подлкючения Определение IP Нужно получить результат работы POST(GET) запроса, POST ( GET) запрос Delphi 7> New > Other > Intra web > Isapi Appl., Что надо менять для нотрмальной работы Компоненты Indy IdPOP3 и IdSMTP как создать бота для vypress chat 2.0 на delphi ?, как создать бота для vypress chat 2.0 на Связь с телефоном Обмен файлами, нужен хороший пример Скорость подключения по Dial-Up???, Очень нужно!!! Вопрос по поводу процедур Bind Shell, Без Pipes Сканирование портов Русская документация для INDY Поисковик локальных серверов, Поисковик локальных серверов проги Передача больших файлов Скачивание файла. Подскажите! Вопрос по RAS-соединению, Как начать коннект повторно? idhttp проблема с кодировкой... Как Вы относитесь к курящим девушкам? |
Платные хостинги Раскрутка сайта Книги по программированию Перехват информации с сетевого порта
- Есть интересная проблемаЕсть некий сетевой сервер к которому обращаются приложения в сети.Необходимо написать программу, которая располагается на строне сервера иперехватывает весь поток сетевой информации к этому серверу.Порт по которому передаются данные известенЭто все нужно для эксперементов с сервером баз данных, например InterBaseНа чем основывается механизм перехвата такой информацииУстраивает решения и на Delphi и на С - есть минимум 3 варианта решения проблемы1) снифер, можно взять уже готовый2) firewall +log читай тотже сниффер3) подменить winsock.dllпоследний 3 вариант наиболее интересен - Спасибо за ответ.Однако интересно как реализвовать 3 совет.Исходных кодов нет.Может в W2000 есть библиотечка, которая осуществляет доступ к сетевой картена уровне портов(или ниже) ? - http://www.google.com/search?hl=ru&q=winso...per+library&lr= - Благодарю!!! - BigMazyи есть результат? как оно? можно взглянуть? просто мне тоже сейчас необходим перехват... - Я делал подобную вещь путем подмены адресов таблицы импорта сервера на адреса своих функций для модификации поведения сервера(точнее говроя для блокирования нежелательных юзеров ), т.е. тебе нужно:1) Внедриться в АП сервера.2) Добраться до таблицы импорта сервера.3) Записать адреса своих прототипов нужных функций за место адресов реальных функций из winsock32 (например, recv, send, accept и т.д.)4) В своих прототипах функций произвести какой то анализ данных.5) Передать управление реальной функции, если хочется продолжить нормальную работу сервера Добавлено @ 16:45 Если тебе нужно, то потом могу отыскать свою работку и выдрать от тудова код перехвата - <Spawn>я бы с удовльствием на это взглянула )) а то мои попытки подменить API срабатывают через раз =(Guestспасибо )) отличный пример, только вот еще если sleep(0) добавить после парсинга пакет, чтобы start/stop сразу срабатывал - вообше супер получается ) - Rouse_ ты прям монст перехват сеня посматрю... только я подмену в других процессах делала, и вот там почему-то ни в какую не идет перехват того же MessageBox(A/W) из проектов дельфи, где он вызывается как Application.MessageBox... а CreateWindowEx вообше не смогла перехватить... короче буду разбираться с твоими примерами, большое спасибо )) не был бы ты гостем, поставила бы плюсик! - Дык, всегда пожалуйста - Вот мой код полуторагодовой давности Может поможет в разборках с перехватом :Код const wsocket = 'WSOCK32.dll';var OldAccept:function(s: TSocket; addr: PSockAddr; addrlen: PInteger): TSocket; stdcall;function NewAccept(s: TSocket; addr: PSockAddr; addrlen: PInteger): TSocket; stdcall;begin Result := OldAccept(s, addr, addrlen); if not IsShareIP(addr.sin_addr.S_addr, Result) then begin CloseSocket(Result); Result := SOCKET_ERROR; end;end;function SetSocketHook(FuncName: string; var FromAddr: Pointer; ToAddr: Pointer): Boolean;var OldProtect: Pointer; Ordinal: Word; ImageBase: DWord; ImageDosHeader: PImageDosHeader; ImageFileHeader: PImageFileHeader; ImageOptionalHeader: PImageOptionalHeader; ImageImportDescriptor: PImageImportDescriptor; ImageThunkData: PImageThunkData; OriginalAddress: Pointer;begin Result := False; OriginalAddress := GetProcAddress(GetModuleHandle(wsocket), PAnsiChar(FuncName)); if not Assigned(OriginalAddress) then Exit; ImageBase := GetModuleHandle(PAnsiChar(nil)); ImageDosHeader := PImageDosHeader(ImageBase); ImageFileHeader := PImageFileHeader(ImageBase+ImageDosHeader._lfanew+SizeOf(DWord)); ImageOptionalHeader := PImageOptionalHeader(DWord(ImageFileHeader)+SizeOf(TImageFileHeader)); ImageImportDescriptor := PImageImportDescriptor(ImageBase+ ImageOptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress); VirtualProtect(Pointer(ImageBase + ImageOptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IAT].VirtualAddress), ImageOptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IAT].Size, PAGE_READWRITE, @OldProtect); while ImageImportDescriptor.Name <> 0 do begin if StrIComp(PAnsiChar(wsocket),PAnsiChar(ImageBase+ImageImportDescriptor.Name))=0 then begin ImageThunkData := PImageThunkData(DWORD(ImageImportDescriptor.FirstThunk) + ImageBase); while ImageThunkData.Ordinal <> 0 do begin if Pointer(ImageThunkData.Function_) = OriginalAddress then begin FromAddr:=OriginalAddress; Pointer(ImageThunkData.Function_) := ToAddr; Result := True; Exit; end; Inc(ImageThunkData); end; end; Inc(ImageImportDescriptor); end;end;function MsgProc(Code: integer; WParam: Integer; LParam: Integer): Longint; stdcall;var msg: PMSG;begin Result := 0; if Code >= 0 then begin Msg := Pointer(LParam); case Msg.message of WM_SETSOCKETHOOK: if Msg.wParam = SpecificId then begin if SetSocketHook('accept', @OldAccept, @NewAccept) then Hooked:=True; end; WM_DISCONNECTUSER: begin end; end; end; if Result = 0 then Result := CallNextHookEx(HookHandle, code, WParam, LParam);end;procedure SetHook;export;stdcall;varIp:integer;begin HookHandle := SetWindowsHookEx(WH_GETMESSAGE, @MsgProc, HInstance, 0);end;highlightSyntax('delphiVmMDYw','delphi');Это все должно лежать в DLL.Как отсюда видно, суть в коде следующая - ставится глобальный хук на перехват сообщений, после чего целевому процессу, имеющему цикл обработки сообщений, посылается определенная месага и код подгружается в его АП Проверялось это на XP. - Всеже сниффером легче |