Компьютерный муравейник Петя, Волк и Никита Хакер, номер #073, стр. 073-056-1 Собственная сеть распределенных вычислений Довольно забавно. Люди пишут огромное количество всяческих переборщиков паролей, ботов, троянов, проксиков и прочего софта и с остервенением устанавливают его на захваченные машины. Большинству не приходит в голову, что можно создать универсальную систему, которая объединит под одним флагом несколько тысяч чужих компьютеров, и ее можно будет использовать для самых разных целей: от научных изысканий до полнейшего дестроя. Каким бы сильным, талантливым и выносливым ни был человек, существует масса задач, с которыми справиться в одиночку невозможно. Ну, к примеру, смог бы какой-нибудь египетский фараон-коротышка самостоятельно построить себе пирамиду высотой в сотню метров? Или смог бы гениальный ученый в одиночку вырастить овцу, располагая лишь ее ДНК? Увы, в одиночку мы не так сильны, как нам хотелось бы. Есть и другой пример. Когда я смотрю на муравейник, у меня захватывает дыхание. Это удивительно: миллионы маленьких, никчемных созданий, каждое из которых не представляет собой ровным счетом ничего, объединив усилия, могут творить вещи совершенно иного масштаба: например, в Азии колонны диких муравьев представляют реальную угрозу домашним животным. Удивительно, как этим насекомым удается согласовывать свои действия: ведь каждый из них точно знает, какую палочку и куда ему надо нести, какую часть украденного бутерброда откусывать и вообще что делать. Все это хранит массу загадок, которые нам сегодня предстоит решить. Мы с Петькой и его Волком решили создать свой собственный муравейник из нескольких тысяч компьютеров. Но для этого надо научиться их контролировать, управлять их действиями и согласовывать работу. Со всеми этими проблемами мы успешно справились. Чем управлять? Как ты прекрасно понимаешь, в Сети сейчас нет недостатка в компьютерах. Стало быть, перед нами стоит одна задача: необходимо как-то управлять их работой, заставляя делать то, что нам необходимо. Например рассчитывать md5-хэши, реализовывать работу socks-proxy или обсчитывать сложную задачу моделирования процессов в плазме. Понятно, что, если мы хотим решать такой широкий спектр задач, нам нужен универсальный и удобный инструмент. Этот инструмент не должен налагать ограничений на схему управления компьютерами, он должен быть абстрагированным от этого уровня. Ответ на этот вопрос уже придумали до нас: это плагинная технология Windows. Наша программа, которая будет управлять компьютерами пользователей, представляет собой обыкновенное плагинное ядро с возможностью скачивания модулей из интернета. Причем она скачивает эти dll’ки с обыкновенного http-сервера, и понятно, что для ее работы надо было реализовывать протокол HTTP/1.1. Петька по своей природе ленивый человек и не стал напрягаться, выписывая руками собственный интерфейс для работы с HTTP, а решил использовать встроенные в Windows средства, если быть точным, библиотеку WinInet.dll. Эта DLL предоставляет набор функций для комфортного взаимодействия с такими протоколами, как FTP, HTTP, GOPHER и т.п., и именно ее, как считает уважаемый Петр, использует Internet Explorer. Написанный движок раз в сутки скачивает с указанного в коде адреса модуль и активирует его. Модуль - это обычная динамическая библиотека, просто экспортирующая функцию Load, с которой и начинается работа dll’ки. Каждая библиотека имеет примерно следующий вид: |