Вирус в chm

Целью данной статьи было ещё раз показать возможности idHTPPServer на практике, а также привести пример небольшой утилиты для удалённого администрирования с наиболее основными, характерными для такого рода программ, функциями. Всё предлагается с готовым примером приложения и прокомментированными исходными кодами. Скачать можно здесь.Статья рассчитана на читателей, уже умеющих создавать на Дельфи приложения средней сложности, и освоивших работу с компонентами INDY, а особенно idHTTPServer в Дельфи, и прочитавших предыдущую статью «Простой веб-сервер на Дельфи».

ПО «RMUtilite» должно обладать следующими возможностями: работа без особого клиента – через http, авторизованный вход, возможность просмотра снимка экрана, возможность закрытия процессов, возможность создать бат-файл или выполнить команду, возможность создавать произвольно текстовые файлы (напр. для правки реестра, запуская их через бат), возможность скачки любого файла, перезагрузка компьютера, завершение своей работы.

Определимся с путём выполнения работы. Можно создать заданное приложение без участия формы, а следовательно с куда меньшим размером файла. Но это приведёт к увеличению исходного кода приложения, что естественно позволяет нам судить о немалом времени создания приложения. Т.к. мы будем создавать его «на лету», то примем идею с формой. Итак, начнём тогда с этого – с формы. Положим на неё, уже нам известный idHTTPServer. Укажем в нём следующее: Active -> true; AutoStartSessions -> true; DefaultPort -> 7890. От него нам понадобится событие IdHTTPServer1CommandGet[/FONT]. Ещё положим Timer1 с Interval -> 777. От таймера нужно будет событие OnTimer. У формы укажем: все BorderIcons -> false; Caption – как понравиться; Top,Left -> 5555 к примеру. На этом оформление приложения фактически завершено.

Теперь рассмотрим, что необходимо нам для обеспечения вышеописанных возможностей.

Работа через http. Обеспечиваем работой с событием IdHTTPServer1CommandGet[/FONT]. По нему предоставляется html-код на разные страницы управления с оформленными полями, кнопками и прочим по необходимости. Подробнее описано в статье «Простой веб-сервер на Дельфи».

Авторизованный вход. Осуществляется средствами idHTTPServer (procedure AuthFailed), также см. статью про веб-сервер.

Возможность просмотра снимка экрана. Это осуществимо (см. исходный код) посредством функции function CSR():[/FONT] TBitmap – получающей снимок экрана, далее function JPEG_C(input:TBitmap):TJPEGImage – перевод с компрессией в jpg и затем if (ARequestInfo.Document=\’/jpg.jpg\’) then[/FONT] отдача этого изображения.

Возможность закрытия процессов. Смотрим функции function ListProcesses():string;[/FONT] (возвращает список процессов) и function KillTask(ExeFileName: string): integer;[/FONT] (завершает выбранный процесс).

Возможность создать bat-файл или выполнить комманду. Создаём простой текстовик во временной директории с именем файла от function batfilename:string. Но главное – этот файл не просто запустить, а получить при этом результат его работы. Это поможет сделать функция его запуска: function Dos2Win(CmdLine:String):string[/FONT]. А для корректного вывода в html понадобится функция DisableHtmlTags(htmltagsstr:string):string[/FONT].

Возможность создавать произвольно текстовые файлы. Просто создаём текстовый файл с указанным текстом в указанном месте.

Возможность скачки любого файла. Прямо по событию Id HTTPServer1 CommandGet[/FONT] отправляем заданный файл в потоке AResponseInfo . ContentStream := TFileStream . Create (…)[/FONT].

Перезагрузка компьютера. Вынесено в отдельный модуль, вызов осуществляется как unit2.ForceRebootNT[/FONT].

Завершение своей работы. Реализация, как и в статье про веб-браузер – через Application.Terminate[/FONT] при проверке переменной по таймеру.

Итог. Или что мы получили в этом приложении (веб-структура):

Вирус в chm

Таким образом, на создание ПО потребовалось чуть более часа, с учётом того, что не было предварительной подготовки к этому, кроме как изучения создания веб-сервера на основе idHTTPServer, т.е. все нужные функции искались или создавались в процессе разработки. Уменьшить размер программы можно с помощью упаковщика UPX. Исправить пароль по умолчанию, равный apassword для пользователя admin можно изменив ресторатором в скомпилированной программе ресурс String №4072, строку 65147 на своё значение. При самостоятельной компиляции приложения – описано в исходных кодах.

Завершение.
При работе над ПО «RMUtilite» использовалась среда разработки Дельфи 7.0. Для придания «RMUtilite» завершённого вида использовался редактор ресурсов Restorator 3.51, упаковщик исполняемых файлов UPX 1.95. Весь код данного ПО, кроме автокода модулей Дельфи и некоторых функций был написан автором. Функции, код которых был взят из сторонних источников следующие: function Dos2Win(CmdLine:String):string; function ListProcesses():string; function KillTask(ExeFileName: string): integer[/FONT].

Данная статья и ПО были созданы в учебных целях, специально для forum.antichat.ru. ПО, несмотря на ограниченность его применения ввиду особенностей выполнения, вполне может быть применено практически. Но автор за любое применение данного ПО ответственности не несёт. Статью и исходные коды можно использовать абсолютно свободно, не забывая лишь про автора, ссылаясь на первоисточник.