(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

DELPHI и ХАКЕР. Как отомстить "врагу" средствами Windows.pas

Источник: realcoding
Трофим Роцкий

Делу, как известно, время, но и потехе опять же час :). При чем тут модуль Windows? А кому захочется тащить на "вражеский" компьютер софтину в 400 КБ, которая только и может, что спрятать панель задач и иконки? Правильно, тому, кто не знает свойств консольного приложения. Но мы-то с вами тянемся к знаниям ;), так что сейчас создадим полноценную программу, чьи настройки можно будет редактировать, и она будет весить ровно в 40 раз меньше, чем описанная выше.

Итак, создам консольную программу [File>New>Other>Console Application]. Только чур! - шутка будет безболезненной, а то можно и в нос схлопотать.
Итак, наш исполняемый файл можно будет настраивать. Логичнее всего это сделать извне, т.е. из файла с конфигом, чтобы не светиться во "вражеской" системе MS-DOS'овским окошком консоли. Поэтому удалите строку "{$Apptype Console}" и в разделе Uses оставьте только модуль Windows. Теперь ненадолго сверните Delphi и с помощью Блокнота создайте в той же директории, что и наше приложение, текстовый файл следующего содержания:

0{скрыть Crl+Alt+Del}
1{менять системные цвета}
0{менять местами кнопки мыши}
1{показывать сообщение: "Windows must die!"}
1{выключиться после одного сеанса}

Назовите его, скажем, "Config.txt". Он состоит из пяти строк; каждая строка отвечает за "свою" функцию. 0 - не задействовать данную "опцию" во время работы программы, 1 - задействовать (false и true). Справа БЕЗ ПРОБЕЛА помещаются комментарии, чтобы мы не позабыли, какая строка за что отвечает. (Здесь показан пример настроек, где отключение Ctr+Alt+Del и смена кнопок мыши неактивны, а остальное работает.)
Таким образом, нужно только связаться с данным файлом, перебрать каждую строку - с помощью цикла for…to, как вы уже догадались. Когда вся информация будет принята приложением, ее придется постоянно держать в памяти с помощью динамического массива.
Я думаю, вам не нужно объяснять, что есть динамический массив, но, чтобы освежить свою и вашу память, напомню. Продекларируйте:

JokeType: Array[1..10] of Boolean;

Здесь содержится 10 значений, 10 различных переменных типа boolean, способных - вам известно - принимать только значения false или true. И данный-то массив помнит это значение персонально для каждого из своих десяти членов. (Я намеренно сделал их так много, чтобы побудить вас добавить в программу новые функции). Указав в квадратных скобках номер интересующей нас переменной, мы получаем для нее возвращаемое значение true/false, соответствующее ей. Прочее, думаю, понятно из листинга.

program Joke;

uses
Windows;

const
SysColorArray: array [0..13] of Integer = (COLOR_ACTIVEBORDER, COLOR_ACTIVECAPTION, COLOR_APPWORKSPACE, COLOR_BACKGROUND, COLOR_BTNFACE, COLOR_BTNTEXT, COLOR_CAPTIONTEXT, COLOR_INACTIVEBORDER, COLOR_INFOTEXT, COLOR_MENU, COLOR_MENUTEXT, COLOR_WINDOW, COLOR_WINDOWFRAME, COLOR_WINDOWTEXT);
ColorArray: array [0..12] of Integer = (16776960, 0, 16711680, 65535, 16711935, 32768, 8388608, 255, 12632256, 16777215, 15780518, 128, 32896);
//Цвета хранятся в модуле Graphics.pas, 
//но мы не будем использовать его,
//а запишем цвета в цифровом виде.

var
F: TextFile; //наш файл с настройками
S: ShortString;
i: Smallint;
h: hwnd;
JokeType: Array[1..10] of Boolean; //наш массив

function CheckLine(Line: ShortString): Boolean;
var
n1,n2: Smallint;
begin
//удаляем из строки комментарии
Result:=false;
n1:=pos('{',Line);
n2:=pos('}',Line);
delete(Line, n1, n2);
if Line='1' then result:=true;
end;

begin
AssignFile(F, 'config.txt'); //соединяемся с файлом
Reset(F); //перемещаемся в начало файла
for i:=1 to 10 do begin //читаем все строки
ReadLn(F, s);
JokeType[i]:=CheckLine(S);
end;
CloseFile(f); //отсоединяемся
//начинаем шутить :)
Randomize;
if JokeType[1] then //отключаем Ctrl+Alt+Del
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0);
//запускаем бесконечный цикл:
while true do begin
Sleep(10000); //ждем 10 секунд
//меняем системные цвета:
if JokeType[2] then
SetSysColors(1, SysColorArray[random(13)], ColorArray[random(12)]);
//меняем кнопки мыши местами
if JokeType[3] then begin
SwapMouseButton(true);
Sleep(3000);
SwapMouseButton(false);
end;
if JokeType[4] then MessageBox(h,'Windows must die!','Error',0);
if JokeType[5] then Halt; //выключаемся
end;
end.

Вот и всё. Еще надо бы наше детище в StartUp запихнуть, но об этом - в следующий раз.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 05.10.2012 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
VMware Horizon 7 Standard : 10 Pack (CCU)
ABBYY Lingvo x6 Европейская Профессиональная версия, электронный ключ
Radmin 3.x - Стандартная лицензия 1 компьютер
SAP Crystal Reports 2008 INTL WIN NUL License
ABBYY Lingvo x6 Многоязычная Профессиональная версия, электронный ключ
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Программирование на Microsoft Access
CASE-технологии
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
СУБД Oracle "с нуля"
Программирование на Visual С++
Каждый день новые драйверы для вашего компьютера!
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100