Главная
    Статьи
    Программы
    Гостевая книга
    О сайте
   

 

   

 

 
 


Главная/Статьи/Прикалываемся над explorer'ом

Прикалываемся над explorer'ом

 

В этой статье я расскажу, как можно приколоться над компьютером-жертвой.  Прикол основан на одном интересном эффекте замены картинки с флагом Windows в explorer (или в Internet Explorer) на свою собственную.

 

Чтобы проделать этот трюк, надо открыть редактор реестра и перейти в следующий ключ: HKEY_CURRENT_USER\Software\ Microsoft\Internet Explorer\Toolbar. В нем создать два строковых параметра: BrandBitmap и SmBrandBitmap и в качестве значения указать путь к bmp-файлу.

Но, допустим, времени на выполнение вышеперечисленных действий у вас нет. Тогда пойдем по пути прогресса и автоматизируем процесс. Запустите Delphi и создайте новое консольное приложение. 

Добавьте в раздел uses модули Registry, Windows и Graphics. Первый позволит работать с реестром, второй нужен для определения папки Windows, а с помощью третьего можно создать bmp файл и сохранить его в директорию windows. 

Создадим функцию, которая будет выполнять нужные нам действия. 

function Force():boolean;

var

  Reg:TRegistry;//объект для работы с реестром

  s:string;

  p:TPicture;//будущий рисунок

begin

  try

    s := GetWinDir(); s := s + '\logo.bmp';//вычисляем путь к папке windows

 

    p := TPicture.Create;

    p.Bitmap.Width := 800; p.Bitmap.Height := 600;

    //установим цвет заливки и контура белым

    p.Bitmap.Canvas.Brush.Color := clWhite;

    p.Bitmap.Canvas.Pen.Color := clWhite;

    p.Bitmap.Canvas.Rectangle(0,0,800,600);

    p.SaveToFile(s);//сохраняем

    p.Destroy;

 

    Reg := TRegistry.Create;//открываем реестр

    Reg.RootKey := HKEY_CURRENT_USER;

    Reg.OpenKey('Software\Microsoft\Internet Explorer\Toolbar',false);

    Reg.WriteString('BrandBitmap', s);//записываем значение

    Reg.WriteString('SmBrandBitmap', s);

    Reg.CloseKey;

    Reg.Destroy;

    Result := true;

  except

    Result := false;

  end;

end;

Если все прошло успешно, то функция вернет true, иначе – false. Теперь напишем функцию, которая исправляет то, что мы натворили.

function Repair():boolean;

var

  Reg:TRegistry;

begin

  try

    Reg := Tregistry.Create();

    Reg.RootKey := HKEY_CURRENT_USER;

    Reg.OpenKey('Software\Microsoft\Internet Explorer\Toolbar',false);

    if Reg.ValueExists('BrandBitmap') then Reg.DeleteValue('BrandBitmap');

    if Reg.ValueExists('SmBrandBitmap') then Reg.DeleteValue('SmBrandBitmap');

    Reg.CloseKey;

    Reg.Destroy;

    Result := True;

  except

    Result := false;

  end;

end;

Ну и функция определения расположения папки windows:

function GetWinDir():String;

var

  buffer:string;

  len:UINT;

begin

  SetLength(buffer, MAX_PATH + 1);

  len := GetWindowsDirectory(PAnsiChar(buffer),MAX_PATH);

  SetLength(buffer, len);

  GetWinDir := buffer;

end; 

А теперь основной код:

 var

  str:string;

  b:boolean; 

begin

  WriteLn('Welcome! This program break the Explorer.');

  WriteLn('Select: 1 - Break');

  WriteLn('        2 - Repair');

  WriteLn;

  Write('Your choise: ');

  ReadLn(str);

  if (not ((str='1')or(str='2'))) then

  begin

    WriteLn('Unknown command. Press Enter to exit');

    ReadLn;

    Halt;

  end else

  begin

    if str = '1' then b := Force();

    if str = '2' then b := Repair(); 

    if b then WriteLn ('Ok!') else WriteLn ('Error!');

  end;

  ReadLn;

Вот и все. Запускаете программу, вводите «1» и нажимаете Enter – значения записываются в реестр. Запускаете снова и вводите «2» - значения реестра удаляются. Благодаря тому, что мы не используем визуальный интерфейс и создает bmp-изображение программно, наше приложение получилось маленьким и быстрым. К тому же, на белом фоне нашей картинки гордо красуется флаг Windows, и непросветленный пользователь подумает, что это глюк самой ОС. Прогу можно спокойно передавать через Internet или записать на флешку.

Ну и, наконец, весь код:

 program ieforce;

 {$APPTYPE CONSOLE}

 uses

  SysUtils,

   Registry,

  Windows, Graphics;

 function GetWinDir():String;

var

  buffer:string;

  len:UINT;

begin

  SetLength(buffer, MAX_PATH + 1);

  len := GetWindowsDirectory(PAnsiChar(buffer),MAX_PATH);

  SetLength(buffer, len);

  GetWinDir := buffer;

end;

 function Force():boolean;

var

  Reg:TRegistry;

  s:string;

  p:TPicture;

begin

  try

    s := GetWinDir(); s := s + '\logo.bmp';

 

    p := TPicture.Create;

    p.Bitmap.Width := 800; p.Bitmap.Height := 600;

    p.Bitmap.Canvas.Brush.Color := clWhite;

    p.Bitmap.Canvas.Pen.Color := clWhite;

    p.Bitmap.Canvas.Rectangle(0,0,800,600);

    p.SaveToFile(s);

    p.Destroy;

 

    Reg := TRegistry.Create;

    Reg.RootKey := HKEY_CURRENT_USER;

    Reg.OpenKey('Software\Microsoft\Internet Explorer\Toolbar',false);

    Reg.WriteString('BrandBitmap', s);

    Reg.WriteString('SmBrandBitmap', s);

    Reg.CloseKey;

    Reg.Destroy;

    Result := true;

  except

    Result := false;

  end;

end;

 

function Repair():boolean;

var

  Reg:TRegistry;

begin

  try

    Reg := Tregistry.Create();

    Reg.RootKey := HKEY_CURRENT_USER;

    Reg.OpenKey('Software\Microsoft\Internet Explorer\Toolbar',false);

    if Reg.ValueExists('BrandBitmap') then Reg.DeleteValue('BrandBitmap');

    if Reg.ValueExists('SmBrandBitmap') then Reg.DeleteValue('SmBrandBitmap');

    Reg.CloseKey;

    Reg.Destroy;

    Result := True;

  except

    Result := false;

  end;

end;

 

var

  str:string;

  b:boolean;

 

begin

  WriteLn('Welcome! This program break the Explorer.');

  WriteLn('Select: 1 - Break');

  WriteLn('        2 - Repair');

  WriteLn;

  Write('Your choise: ');

  ReadLn(str);

  if (not ((str='1')or(str='2'))) then

  begin

    WriteLn('Unknown command. Press Enter to exit');

    ReadLn;

    Halt;

  end else

  begin

    if str = '1' then b := Force();

    if str = '2' then b := Repair();

 

    if b then WriteLn ('Ok!') else WriteLn ('Error!');

  end;

  ReadLn;

end.

Expert © 2006-2008
Hosted by uCoz