Jak zawiesić programowo mój system

Gdybym mógł napisać program użytkownika, który zawiesiłby mój system operacyjny (nie moją aplikację) , Jak bym to zrobił?

Myślałem o jakimś przełączeniu mojego programu usermode na tryb jądra i spowodowaniu uszkodzenia pamięci. Czy to możliwe?

Uwaga: nie tworzę wirusa. Tylko ciekawość.

Author: Mat, 2011-04-29

11 answers

KeBugCheck w systemie Windows jest udokumentowanym sposobem uzyskania BSOD.

Możesz również spróbować usunąć root klucz rejestru (\REGISTRY) w systemie Windows XP, używając natywnego API NT.

 8
Author: Mehrdad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-29 08:10:05

Zapisuje i wczytuje moduł jądra, który wywołuje panic () lub implementuje jego odpowiednik.

Lub po prostu wykonaj polecenie shutdown lub halt lub syscall, który je implementuje.

 7
Author: Chris Stratton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-29 07:27:41

Jeśli System Operacyjny jest windows, Utwórz fałszywy sterownik, który wyświetla wskaźnik NULL. Crash!

 6
Author: Tony The Lion,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-29 07:28:13

Cała idea systemu operacyjnego polega na tym, że program użytkownika nie może go zawiesić w normalnych warunkach. Oczywiście nadal możesz zrobić coś takiego, jak wyczerpanie miejsca na dysku na partycji, która jest używana do pliku wymiany i to pogorszyłoby wiele systemów operacyjnych lub mogłoby znaleźć znaną lukę, ale nie ma bardzo łatwego sposobu, aby niezawodnie ją zawiesić.

 3
Author: sharptooth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-29 07:24:14

W Linuksie, Alt-SysRq-C spowoduje awarię/ponowne uruchomienie jądra.

W Windows patrz: http://www.dailygyan.com/2008/09/some-methods-to-crash-your-windows.html

 3
Author: entropo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-29 07:30:22

W systemie Windows jedną z możliwości jest napisanie sterownika trybu jądra, który blokuje niektóre strony pamięci należące do procesu, a następnie kończy ten proces. Spowoduje BSOD "proces ma zablokowane strony".

 2
Author: ur.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-29 07:29:10

Linux: mimo, że system operacyjny nie jest całkowicie uszkodzony, możesz łatwo uczynić go bezużytecznym, przydzielając dużo pamięci (i czytając/zapisując go, aby przydział stał się efektywny i sprawił, że system operacyjny się dużo zamienił) i rozwidlając wiele procesów. "Fork bomb" jest słowem kluczowym i może być nawet wykonane w skrypcie powłoki.

 1
Author: Tilman Vogel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-29 07:31:09

Myślę, że powód, dla którego chcesz awarię systemu operacyjnego jest istotne tutaj. Próbujesz symulować warunek do testowania, czy jesteś po prostu ciekawy?

Oto dwie opcje, jeśli chcesz odtworzyć i zautomatyzować awarię, w celu tolerancji błędów.

  • uruchom maszynę wirtualną (vmware, VirtualBox) i po prostu zabij proces maszyny wirtualnej. Alternatywnie możesz nadać mu bardzo niski priorytet, upuścić urządzenia lub w inny sposób symulować złe rzeczy.
  • Użyj serwerów, które mieć konsolę zarządzania. Będzie to miało API, które może po prostu wyłączyć urządzenie.

Inne liczne sugestie są dobre, jeśli chcesz upaść z samego systemu operacyjnego. Te awarie oprogramowania mogą pomóc odtworzyć błędny proces. Podobny zestaw awarii związanych ze sprzętem może również działać(np. zmniejszenie prędkości na programowalnym wentylatorze i przegrzanie procesora).

Powód twojej prośby jest naprawdę bardzo ważny, ponieważ wszystkie różne błędy dadzą nieco inny wynik.

 0
Author: edA-qa mort-ora-y,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-29 08:07:53

Spróbuj przydzielać kawałki pamięci, dopóki nie masz wolnej pamięci:

int alloced = 0;
for(;;)
{
    char *alloc = malloc(10*1024*1024); // alloc 10 MB
    if(alloc != NULL)
    {
        alloced += 10;
        // edit: you have to memset the memory otherwise the system will give it back to you next time
        memset(alloc, 0xab, 10*1024*1024);
        printf(" alloced %d MB\n", alloced);
    }
}

Edytuj : W rzeczywistości próbowałem właśnie teraz na 64-bitowym Linuksie z 2 GB PAMIĘCI ram i 3,3 GB pamięci swap: ekran zamarzł, mogłem przeznaczyć 4950 MB PAMIĘCI ram, ale potem proces został zabity przez system, a linux z wdziękiem upadł na nogi, więc nie, to nie działa:=) {]}

 0
Author: Gui13,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-29 08:08:42

Awaria systemu operacyjnego przy użyciu czystej aplikacji trybu użytkownika oznacza, że jądro jest podatne na ataki. Jeśli System Operacyjny jest dobrze przetestowany, nie powinno to wystąpić.

Możesz wypróbować okna BSoD, atakując bugous 3rd-party drivers poprzez wysyłanie do nich Garbage Io-CONTROLs.

DeviceIoControl Function (Windows) http://msdn.microsoft.com/en-us/library/aa363216 (VS.85). aspx

 0
Author: Peter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-29 10:11:57

W systemie windows można odwoływać się do programu "Notmyfault" i jego kodów źródłowych. http://blogs.technet.com/b/markrussinovich/archive/2005/08/17/unkillable-processes.aspx

 0
Author: Ron Tsai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-29 10:16:52