Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2010, 09:17   #11
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Когда делаем двойной щелчёк - по содержанию.
Вот и всё! Удачи.
И отлавливается каким-нибудь AVG .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 01.06.2010, 00:13   #12
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Цитата:
На самом деле всё очень просто.
Дело в том, что Винда опознаёт файлы не по расширению, как казалось бы, а по первым 3 байтам самого файла.
Да ладно. Я взял честный exe и переименовал его в bmp. Судя по вашей логике должна была программа моя запуститься. А запускается Paint. Запускается и извиняется, что он не понял, как эту картинку открыть.

Цитата:
Берём любой файл картинки и вписываем MZP. Дальше идёт аннотация и Goto на начало исполняемого файла.
Не понял, что значит аннотация и какой такой Goto? Мне кажется, что Винда для загрузки и запуска программ всё таки использует не только первые три байта. Вообще тут программисты для загрузчика целый PE формат придумали.

DOS MZ-заголовок
DOS stub
Заголовок PE
Таблица секций
Секция 1
Секция 2
Секция ...
Секция n

А оказывается это всё лишнее, надо просто первые три байта в MZP написать и какой то загадочный goto.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 01.06.2010, 06:55   #13
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Ну в общем это почему-то возможно. Хотя я не понимаю почему. Проводник должен просто запускать программу ассоциированную с файлом и передавать ей путь этого файла как параметр, почему он пытается его выполнить, непонятно.
Altera вне форума Ответить с цитированием
Старый 02.06.2010, 06:39   #14
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

М-дас. Погорячился слегка.
Но на запуск файла заголовок всё же влияет.
Надо будет поплотнее с этим поработать.
А тема вообще интересная. Зацепила.
Если чё раскопаю - отпишусь.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 02.06.2010, 06:58   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Как мне объясняли, вирь работает по принципу stack overload. В старых вьюверах можно было такое выловить, когда он загружает картинку, а в ней тело вируса дописано таким образом чтоб попав в память поместить указатель на тело виря в стек (при загрузке картинки) именно там где по идее должен быть указатель возврата из процедуры, а кривописанные вьюверы не проверяют что загружают и сколько поэтому получается что данные картинки как бы выполняются.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.06.2010, 01:06   #16
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Stack overflow. Не единственный способ, но самый распространённый. Набросал вот семпл, с виду безобидный код, пусть несколько притянутый за уши, но в качестве примера сгодится Должен работать на XP SP2. Читаем файл в буфер, копируем содержимое буфера в memo.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var buf: array[0..1023] of char;
    f: file of byte;
begin
  if OpenDialog1.Execute then
  begin
    AssignFile(f, opendialog1.FileName);
    Reset(f);
    BlockRead(f, buf, FileSize(f));
    Memo1.Text := buf;
    CloseFile(f);
  end;
end;
Если размер файла не превышает размер буфера - всё ок, вот так выглядит программа на выходе из процедуры button1.click. В стеке - адреса возвратов из вложенных друг в друга процедур, всё прекрасно, все довольны.



Но если он (файл) больше - BlockRead запишет данные за концом локальной переменной buf и затрёт идущие далее данные в стеке. Можно подобрать файл так, что его содержимое заменит адрес возврата из функции на значение, которое будет указывать куда угодно, например на сам буфер. В буфере - подсунутый нами базонезависимый код, он же шеллкод, т.е. не содержащий абсолютных адресов и способный выполнятся в любом месте программы. Таким образом программа с уязвимостью "выполнит" простой текстовый файл. И всё потому, что разработчик не проверил размер входных данных.

Вложения
Тип файла: rar Buffer ovwrflow.rar (166.9 Кб, 23 просмотров)
пыщь

Последний раз редактировалось JTG; 03.06.2010 в 01:24.
JTG вне форума Ответить с цитированием
Старый 03.06.2010, 08:46   #17
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

Модераторы обсуждают написание вирусов.
Беспредел, граждане!
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Старый 03.06.2010, 12:18   #18
Juffin
Форумчянин
Форумчанин
 
Аватар для Juffin
 
Регистрация: 05.04.2009
Сообщений: 446
По умолчанию

Цитата:
Модераторы обсуждают написание вирусов.
не написание, а принцип работы
Nobody expects Spanish Inquisition!
Juffin вне форума Ответить с цитированием
Старый 03.06.2010, 12:24   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
mrChester
Эти вирусы могут и не работать, если криворукие программисты не будут использовать небезопасные функции заливания чего-то в стек.
Так что это скорее не как написать вирус а почему его можно написать.
Между прочим эта ошибка проектирования не только вирусы дает, она достаточно важна. чтоб на нее внимание обратить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.12.2013, 18:45   #20
vanilin89
Новичок
Джуниор
 
Аватар для vanilin89
 
Регистрация: 13.10.2013
Сообщений: 1
По умолчанию

На xp sp2 можно сделать проще:
1)Открыть картинку в photoshop
2)Открыть сведения о файле
3)И в строке 'Источник' прописать нужную вам команду(например *run calc.exe)
4)После сохранения на sp2 должно все работать)
http://www.youtube.com/watch?v=gIIgYUfrLOU
vanilin89 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как легче всего нарисовать на картинке курсор и использовать инверсивное рисование? TwiX Мультимедиа в Delphi 0 04.03.2010 20:28
Как узнать щелкнули ли по картинке в документе pavelXYZ Microsoft Office Word 0 14.09.2009 17:20
Вирус,из-за которого не работает рабочий стол JerryS Безопасность, Шифрование 7 13.09.2009 19:54
отдельное окно в <td> с горизонтальной прокруткой как на картинке v-victoria HTML и CSS 0 13.08.2009 22:24
как удалить анти вирус( касперский 2006)если она не работает и ее не возможно удалить Alar Общие вопросы Delphi 0 29.10.2006 21:36