Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Хакерские штучки. Кодинг. Бизнес в Сети. Хакерские приколы и шутки!


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

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

Нам понадобятся :

Borland Delphi 6.0 или 7.0(1 шт.)
Компьютер (1 шт.)
Руки (2 шт.)
Голова (1-1,5 шт.).

Delphi можно скачать здесь(российский траффик) и здесь(молдавский траффик).

Компьютер можно заказать в любом компьютерном магазине, одолжить у друга и т.д.

Если у вас нет остального, то ничем не могу помочь – все вопросы к родителям.


Урок 1. Подготовка к боевым действиям

Итак, прежде чем приступить к описанию самих пакостей, нужно обеспечить нашей программе несколько вещей:
1. При активации программа должна быть невидимой.
2. Через определенный период программа должна выполнять какое-либо действие.

Для разработки всего этого счастья была выбрана среда Borland Delphi за понятный интерфейс и простоту использования. Несмотря на это, все нижеприведенное можно с таким же успехом реализовать и в любом другом Win32 языке программирования, работающем с WinApi. Как говорится, было бы желание.
Запускаем Delphi. После красивого окошка с логотипом перед нами появляется сама среда разработки. Вверху находятся диалоги открытия/закрытия файлов и панель компонентов (вкладки Standart, Additional и т.д.) Слева находятся Дерево Объектов (Object TreeView) и Инспектор объектов (Object Inspector). Чуть правее от них расположена наша главная форма. Для начала сделаем так, чтобы она (форма) при запуске приложения не была видна. Для этого просто сделайте двойной клик на форме и в открывшемся окошке с кодом введите строчку:

Application.ShowMainForm:=false;

Вновь возвращаемся к форме (F12) и помещаем на нее из палитры компонентов — вкладка System компонент, похожий на маленькие часики. Он называется Timer и позволяет через определенное количество времени передавать управление вашему коду. Выделим его кликом и посмотрим на инспектор объектов. Видите значение Interval=1000? Это значит, что код, записанный в свойстве OnTimer, будет вызываться каждые 1000 мсек, т.е. каждую секунду. Т.е., если вы хотите изменить интервал, через который будет срабатывать ваш прикол, просто измените свойство Interval. Рекомендую для первой пакости установить его значение в 4000. Делаем двойной клик по компоненту Timer и вновь попадаем в окно кода. После проделывания всего вышеприведенного у вас там должен быть следующий код:

unit Unit1;
interface
uses
Windows, Messages, Sys-Utils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Procedure TForm1.FormCreate(Sender: TObject);
begin
Application.ShowMainForm:= false;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
{
Именно здесь мы будем писать код, отвечающий за сами шутки}
end;
end.

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

Урок 2. Приколы с блокнотом.

Вы с компьютером когда-нибудь говорили? А он с вами? Серьезно ?!!

Есть довольно много пользователей, которые для набора небольших документов используют встроенный в ОС Windows текстовый редактор "Блокнот". Модификацией этой маленькой и безобидной программы мы сейчас и займемся.
Перейдите в окно кода (F12) и найдите там строчку из одного слова Var. Это слово является сокращением от Variables, и после него описываются все переменные, которые вы хотели бы задействовать в своей программе. Под строчкой Form1: TForm1; напишите:

Mas:array[1..5] of pchar; {здесь мы разместим 5 строк, которые должен будет сказать наш "Блокнот"}
h:hwnd;
{эти 2 переменные нужны, чтобы адресовать текст именно в окошко "Блокнота"}
dc:hdc;
i:byte=1;
{переменная для переключения между выводимыми строками}


В процедуре TForm1.FormCreate добавьте строчки, чтобы она выглядела так:

Procedure TForm1.FormCreate (Sender: TObject);
begin
{1}Application.ShowMainForm:=false;
{2}mas[1]:='Привет';
{3}mas[2]:='Хули смотришь ?? А??';
{4}mas[3]:='Блокнота говорящего не видел?';
{5}mas[4]:='Ваще охуел что ли ?';
{6}mas[5]:='Ну и ладно. Хули мне тут с лохами пиздеть. Молчу.';
end;

Затем модифицируем процедуру TForm1.Timer1Timer следующим образом:

procedure TForm1.Timer1Timer (Sender: TObject);
begin
{7}h:=FindWindow(nil,'Безымянный — Блокнот');
{8}if h<> 0 then begin
{9}dc:=GetDC(h);
{10}textout(dc,5,i*15,mas[i],length(mas[i]));
{11}if i+1<6>
Проверим работоспособность.

Скомпилируйте программу (F9).

Ваше окошко пропадет (не зря же мы его скрывали), но сама программа будет оставаться в памяти и терпеливо выжидать свою жертву.

Теперь запустите Пуск > Программы > Стандартные > Блокнот и наслаждайтесь:). Завершить работу вашего приложения можно, нажав Ctrl+F12.

Теперь немного теории (нужно же хоть чуточку представлять, что ж вы натворили-то:)).

Строка {1}, как было сказано ранее, прячет наше приложение от глаз пользователя (но не от Ctrl+Alt+Del).

Строки {2}-{6} описывают то, что будет печататься в нашем "Блокноте". Модифицируйте их на свое усмотрение.

Строка {7} получает дескриптор окна "Блокнота" по его заголовку (это надпись вверху окна на синем фоне). Поэтому программа будет работать только с "Блокнотом", в который не загружен текстовый файл.

Строка {8} проверяет, найдено ли это окно. Если да, то работают строки {9}-{11}.

В строке {9} мы по дескриптору окна "Блокнота" получаем его контекст устройства (белая область, куда будут выводиться надписи).

В строке {10} мы выводим саму надпись в "Блокноте". Надпись хранится в массиве

mas[i] — их мы задавали выше.

Строка {11} проверяет, будет ли переменная i при увеличении лежать в пределах [1-5], и увеличивает ее для отображения в следующий раз новой строки.

Сохраним программу (Ctrl+S). Вам придется сохранить два файла: файл с кодом (имя давайте любое) и имя проекта (совпадает с именем *.exe-файла). Проект нужно называть так, чтобы даже если прога будет обнаружена, то решили бы, что это системный файл. Примеры: winsys32.exe, kern32.exe и т.д. Теперь достаточно запустить *.exe-файл (лежит там, куда вы сохраняли проект) и спокойно ждать, когда жертва запустит "Блокнот". В случае, если жертва попытается отвечать компьютеру, можно смело вызывать санитаров и ждать устранения «человека, открывшего в своём ПК Искусственный Интеллект».


Урок 3. Что можно придумать с окошками сообщений ??

Не сомневаюсь, что на компьютере-жертве стоит ОС Windows, которая ни фига нелицензионная. Но, поскольку бедного дядю Билла все ругают и обижают, нужно сделать хоть одно доброе дело на благо его благ:). А именно — напоминать о том, что Windows нужно регистрировать, каждые 5 минут. Посему снова загружаем наш фундамент, устанавливаем значение Interval в 300000 (в инспекторе объектов для объекта Timer) и дописываем пару строчек в процедуре TForm1.Timer1Timer:

Procedure TForm1.Timer1Timer (Sender: TObject);
begin
if GetDesktopWindow<> 0 then begin
MessageBox(GetDesktopWindow,'Срок действия лицензии вашей системы истек.', 'Windows XP', MB_OK);
end;
end;

И каждые 5 минут на бедного пользователя будет вываливаться веселое окошко.

Опять немного теории. В этой программке все гораздо проще. Все взаимодействие с системой осуществляется по дескриптору окна, которое есть почти всегда. Это окно — ваш рабочий стол. Получить его дескриптор можно с помощью функции GetDesktop Window.
А процедура MesageBox выводит само сообщение, где сначала выводится текст послания ('Срок действия лицензии вашей системы истек'), а потом заголовок окна ('Windows XP'). Запускаем… наслаждаемся:).

Урок 4. Прикалываемся далее с железками – работаем с CD-приводом.

Грузим наш фундамент и выставляем компоненту Timer значение Interval в 600000 (10 мин). Затем в обработчике OnTimer пишем:

procedure TForm1.Timer1Ti-mer(Sender: TObject);
begin
MessageBox(GetDesktopWindow, '
Бля !! Где мой диск ???', 'CD-ROM', MB_OK);
mciSendString('Set cdaudio door open wait', nil, 0, handle);
end;


Ищем в программе строчку, начинающуюся со слова Uses (искать вверху кода).
После этого слова в Delphi описываются имена подключаемых модулей. Для работы программы нужно в конце дописать

MMSystem;

Компилируем (F9) и... каждые 10 минут у бедного юзера будет выскакивать нижеприведенное окошко, просящее диск, и открываться привод CD-ROM'а.
Для закрытия CD-ROM'а можно добавить одну строчку в нашу программу:


MessageBox(GetDesktopWindow,'Бля !! Где мой диск ??? ', 'CD-ROM', MB_OK);
mciSendString('Set cdaudio door open wait', nil, 0, handle);
mciSendString('Set cdaudio door closed wait', nil, 0, handle);



Готово.

Продолжение уроков следует...


В избранное