Автор: dark0ut 20.12.2002 21:43
Реально ли подвесить комп через pascal
А то я вчера значит
GetMem(p,64000);
а Dispose - соседям оставил;)
такое началось
страница в IE открывалась 5 минут и т.д.
Возможно такое?
Автор: mj 21.12.2002 0:57
тормознуть можно, а повесить разве что 98'ую...
Автор: Vit 26.12.2002 10:01
Win 95/98/ME намертво вешает такой код
Код
Repeat
asm
cli
end;
Until False;
или можно запустить (ShellExecute) файл с именем "c:concon"
С NT/2000/XP как и ожидалось такие номера не пройдут.
Автор: mj 26.12.2002 21:31
Цитата
Win 95/98/ME намертво вешает такой код
Repeat
asm
cli
end;
Until False;
или можно запустить (ShellExecute) файл с именем "c:concon"
С NT/2000/XP как и ожидалось такbt номера не пройдут.
Поясню тем кто не знает asm,
cli обозначает отрубить все апаратные прерывания... Под NT эту команду процесор почемуто просто не замечает...
Автор: Vit 27.12.2002 2:32
Цитата
Под NT эту команду процесор почемуто просто не замечает...
Ядро NT имеет собственные процедуры обработки для команд Jmp, Cli, Int и некоторых других. Поэтому если программа не является сервисом, то вместо этих команд выполняются специальные процедуры ядра NT которые эмулируют эти команды.
Автор: BlackShadow 17.01.2003 17:59
Ну, про 9х говорить нечего. Его повесить крайне просто. Например :
asm
CLI
HLT
end - запрещаем прерывания и делаем паузу до их возникновения. Для надёжности можно загнать в цикл. А вот с NT надо быть хитрее. У меня только 2 варианта реализации :
1). Нагло. Создаём Run-Time нить с наивысшим приоритетом (лучше при помощи Job'а) и в цикле занимаем FPU, а заодно и CPU.
2). Коварно. Нахально. Неожиданно. Переводим процессор в реальный режим, перехватываем все прерывания и творим, что хотим. Одно "но". Даже у меня и моего "товарища" возникли проблемы в реализации этого метода. Надо код оптимизировать буквльно на несколько тактов (исходя из подопытного Celeron-330), а вот как...
А вот испоьзуя BP или что либо иное под Real-Time или Protected Mode такого не добиться. А жаль.
Автор: mj 22.01.2003 13:16
Цитата
1). Нагло. Создаём Run-Time нить с наивысшим приоритетом (лучше при помощи Job'а) и в цикле занимаем FPU, а заодно и CPU.
Ну взять на себя полную загрузку программа может ухитрится, это на самом деле легко делается через ловушки (пример я увидел на всем известном переводчике LingoWare)...
Но сама система то при этом не виснет и рано или поздно программа будет выгружена...