Я придурок. Диверсия. Глава 1. QIP. Смайлики. Кто здесь?

Я придурок. QIP. Диверсия
Меня часто спрашивают: как отомстить человеку, какую программу ему переслать, чтобы как-то что-то? Некоторые люди доходят до того, что посылают вирусы, которые чуть ли не сносят систему, форматируют диски… Я противник таких действий, поэтому я буду описывать невинные шутки, которые ничего не удаляют и не воруют. Пройдёмте.

Итак. У жертвы стоит qip. Наша задача: написать простую программу-шутку, которая не навредит пользователю, но … Тут я долго думал что же такое написать. Чтобы было весело в общем.

К чему присмотреться? Сегодня мой взор пал на смайлы.

[смайлы в qip]

Идём в Program files, в папку, где установлен qip. Папка Skins. В ней есть файлы skins.cfg и current.cfg. В первом перечислены папки, в которых скины, во втором на первой строчке имя папки текущего скина. У меня это ICQ5.
Что ж, идём в папку ICQ5. Там находим папку Smilies, а в ней Animated и Static. Почему две? Да потому что в настройках qip можно выбрать, какие смайлы мы используем.

[_define.ini]

В обеих папках есть такой файл — _define.ini. Откроем его, смотрим:

O:-),O=)
:-),: ),= )
:-(,: (,;(
;-),; )
: - P
8 - )
: - D
:-[
=-O
:-*
:'(
:-X,:-x
>:o
: - |
:-\,:-/
*JOKINGLY*
]:->
[:-}
*KISSED*
:-!
*TIRED*
*STOP*
*KISSING*
@}->--
*THUMBS UP*
*DRINK*
*IN LOVE*
@=
*HELP*
\m/
%)
*OK*
*WASSUP*,*SUP*
*SORRY*
*BRAVO*
*ROFL*,*LOL*
*PARDON*
*NO*
*CRAZY*
*DONT_KNOW*,*UNKNOWN*
*DANCE*
*YAHOO*,*YAHOO!*
*HI*,*PREVED*,*PRIVET*,*HELLO*
*BYE*
*YES*
;D,*ACUTE*
*WALL*,*DASH*
*WRITE*,*MAIL*
*SCRATCH*

Что это? На каждой строчке написаны текстовые эквиваленты какого-либо смайла, их может быть несколько через запятую, все они, будучи в сообщении, заменяются картинкой соответствующего смайла (по алфавиту, как я понял), а при выборе нами смайла для вставки и отправки с ним сообщения, отправляется первый в списке эквивалент. Матчасть на этом закончим.

[программа]

Сначала задумка. Для примера сделаем так: выбирая смайл *ROFL*, человек будет отправлять «я придурок». Чисто ради примера и наглядности.
Идём в delphi, New Application. Project -> Remove from project -> удаляем Form1/Unit1. Project -> View source. Перед нами сам проект, без формы.
Удалим всё лишнее, оставим только

program dqip;

uses
  windows;

begin

end.

Функцию для получения пути к qip возьмём отсюда: Получение пути к qip на delphi.

Далее,

var
  i,p:integer;
  qpath:string;

begin
  qpath:=GetQIPPath;
  for i:=1 to Length(qpath) do
    if qpath[i]='\' then
      p:=i;

В p теперь позиция последнего символа \, сейчас обрежем, чтобы получить чисто папку, а не полный путь к exe — он нам не нужен. Да, я знаю про ExtractFilePath, но ради него я не стал подключать SysUtils.

  Delete(qpath, p+1, MaxINT);

Прибавляем единицу чтобы оставить косую черту.
Теперь найдём папку смайлов скина:

  AssignFile(f, qpath+'Skins\current.cfg');
  Reset(f);
  Readln(f, qskin);
  CloseFile(f);

  qpath:=qpath+'Skins\'+qskin+'\Smilies\';

Прочитаем из файла в массив, внесем изменения:

  AssignFile(f, qpath+'Animated\_define.ini');
  Reset(f);
  repeat
    l:=Length(arr);
    SetLength(arr,l+1);
    Readln(f, arr[l]);
    if Pos('*ROFL*', arr[l]) then
      arr[l]:=' y i?eao?ie ,'+arr[l];
  until eof(f);
  CloseFile(f);

И запишем:

  Rewrite(f);
  for i:=0 to Length(arr)-1 do
    writeln(f, arr[i]);
  Closefile(f);

Аналогично с другим, смотри уже в прикрепленном исходнике.

[что теперь?]

Теперь наш дружок, перезапустив qip и поставив ржущий смайл, отправит «я придурок». Дело закрыто.

скачать

И ещё по поводу розыгрышей — можно купить замороженную капусту и заказать другу доставку домой. Вот он образуется :) К слову, лидер российского рынка по оптовой поставке замороженных овощей и фруктов, компания Гранд-Престиж, предоставляет доставку за 4 часа без выходных по Санкт-Петербургу.

(c) crystalbit, http://parsers.info
Подпишись на rss и будешь всегда в курсе

6 ответов к «Я придурок. Диверсия. Глава 1. QIP. Смайлики. Кто здесь?»

  1. Чувак! Это гениально. Пытался сварганить подобное, но забросил.. Немного модернизирую твой код и накажу спамеров ;) Спасибо)

  2. Как-то даво написАл маленькую прогу (на С++), запуск которой делает небольшие изменения в компе, и после этого комп работает нормально до перезагрузки. НО больше не загрузиться. Причем сообщения системы при загрузке не указывают на нужную проблему. Откатить назад изменения невозможно. Тока переустановка.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *