BackDoor - удалённое администрирование 1Delphi , Интернет и Сети , BackDoorBackDoor - удалённое администрирование 1
BackDoor. Так первую версию моей проги удаленного администрирования назвал небезызвестный Кашперский. Я обиделся, но слово мне понравилось. Ассоциируется с "все в сад" и "уйти огородами". В цикле статей я хочу представить почти все исходники моей программы "DTr" v.1.3 вместе с разъяснениями (все разжевывать не буду, но кому надо, тот поймет). Цель всего этого очень проста - при изменении исходников такие типы как Кашперский (AntiViraltoolkitPro и т.п.) какое-то время просто будут отдыхать. Моральные аспекты меня не смущают - людей, не способных поставить firewall и не смотрящих, что там вместе с маздаем запускается, надо наказывать. Исходники приводятся на асме и на Delphi. Если ты поскучнел и обломался читать дальше, то готовую программу можно взять с http://www.danil.dp.ua В принципе, писать можно на чем угодно - по большому счету, исходники будут отличаться только вызовом функций WinAPI. Также желательно взять AsmEdit. AsmEdit я предпочитаю от Anatoly Voznuk - http://www.avt.newmail.ru (если разобраться в настройках, то как AsmEdit, HTMLedit и замена NotePad он просто незаменим). Если других вариантов нет, то Delphi и MASM можно взять на базаре. "Компактные" купцы дают гарантию на нечитабельность и глюки. Если что, то меняют. Дальше думай сам. Если у тебя есть актерские таланты, то в результате у тебя будут установлены Delphi, MASM и на полке будет лежать какой-нибудь нужный в хозяйстве компакт. Пригодится и программа для сжатия exe и dll. "ASpack" можно взять на http://www.aspack.com. Будет работать бесплатно несколько дней, ну а если что, то crack сам знаешь где взять. Теперь об программах типа "DTr" v.1.3. Обычно это сервер (запускается и работает на удаленном компе) и клиент (на твоей машине). Есть как минимум 4 разновидности сервера:
Здесь мы рассмотрим четвертую разновидность. Можно просто прописать в ключ реестра "HKLM/Software/Microsoft/Windows/Current Version/Run" какой-нибудь параметр со значением, являющейся командной строкой запуска сервера. Можно, например, обозвать сервер "lternat.exe" (эль маленькая вначале), запускать в программе настоящий "internat.exe" (переключение языков) и соответствующим образом изменить параметр "Internat" в реестре. Вариантов много. Сервер будем писать на MASM - размер должен быть маленьким. Вот исходники скелета сервера ("dtr13_s.asm") :
После компиляции у нас должен появиться файл "dtr13_s.exe". Пару слов о том, как это все работает. При запуске программы она записывает в реестр параметр "nbsession" со значением "nb003.exe" в ключе "HKLM/SoftWare/Microsoft/Windows/Current Version/Run" - для старта вместе с m$ window$. ВНИМАНИЕ! Если система WinNT и пользователь не администратор, то облом - энтюха не пустит в HKLM. Потом переписывает себя в каталог , получает значение порта из переменной "SysValue" в ключе "Software\Microsoft\DTr003\", инициализирует сокет с получением сообщений при соединении и чтении, получает версию винды, создает скрытое окно и запускает цикл обработки сообщений. Этот скелет сервера может реагировать на соединение и на прием команды "helo". Теперь нужно написать клиент. Для клиента размер не важен, а хочется сделать все красиво - для себя стараемся. Клиент пишем на Delphi 5. По моему мнению, самая удобная среда создания программ, хотя размеры, РАЗМЕРЫ... Запускаем Delphi, вверху в меню ищем "File", нажимаем "Close All", "New Application". У нас появилась форма - главное окно нашей программы. Теперь туда вставим объекты Memo ("Memo1"), два Edit ("Edit1", "Edit2"), Button ("Button1"). Все с раздела "Standart". "Memo1" нужен для отображения сообщений сервера, "Edit1" - адрес сервера, "Edit2" - порт и "Button1" - для соединения/рассоединения. Для посылки серверу команд, будем использовать кнопки с объекта "ToolBar" (закладка "Win32"). После расположения на форме "ToolBar1", click-нем по нему правой кнопкой мыши, и выберем "New Button". Этой кнопкой мы будем посылать серверу команду "helo". Объекты "Memo1" и "ToolBar1" сделаем невидимыми (слева в "Properties", "Visible" = "false"). Теперь с закладки "Internet" кинем на форму объект "ClientSocket" - "ClientSocket1". Выделим его и перейдем в список событий - "Object Inspector" -> "Events". Нас интересуют 4 события: при соединении, при ошибке, при рассоединении и при чтении. Это onConnect, onError, onDisconnect и onRead соответственно. Два раза нажимаем на каждом, на наш "Button1" и на кнопку в "ToolButton1". Чтобы избежать всяких накладок и т.п., созадим очередь приходящих сообщений. Для этого надо создать список с указателем на начало, конец и процесс обработки списка. Для преобразования имени сервера в IP-адрес, необходимо добавить "WinSock" в раздел "uses". Вот исходники ("Unit1.pas"):
Клиент и сервер будут работать на системах Win-9x/ME/NT. На win2000 работать не будет - нет некоторых функций. Также необходим установленный протокол TCP/IP. Проверим все это. Запустим сервер. Запустим клиент. В элементе управления "Edit1" укажем 127.0.0.1. В "Edit2" - 10001. Нажмем "Button1". Если руки не кривые, то должно появиться сообщение о системе сервера. Соединение произошло. Нажмем кнопку, посылающую серверу команду "helo". Все, проверка закончена. P.S. Статья и программа предоставлена в целях обучения и вся ответственность за использование ложится на твои хилые плечи. Статья BackDoor - удалённое администрирование 1 раздела Интернет и Сети BackDoor может быть полезна для разработчиков на Delphi и FreePascal. Комментарии и вопросыМатериалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |