Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Prekid gasenja racunara?

[es] :: Pascal / Delphi / Kylix :: Prekid gasenja racunara?

[ Pregleda: 3183 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ZuLu
Milos Micic

Član broj: 3975
Poruke: 8
*.jubanka.com.



Profil

icon Prekid gasenja racunara?25.05.2002. u 22:44 - pre 243 meseci
Cao svima. Da li neko moze da mi kaze kako da pesretnem signal za gasenje racunara, i sta je to "Ring 0", kako sam razumeo to je neka dozvola koja ima veze sa presretanjem signala gasenja racunara ali ako neko moze da mi malo bolje to objasni bio bi vrlo zahvalan.
Unapred hvala!!!!
 
Odgovor na temu

SEH

Član broj: 2215
Poruke: 94
*.net.hinet.hr



Profil

icon Re: Prekid gasenja racunara?26.05.2002. u 13:43 - pre 243 meseci
Ring0...the ring of power. Gle, na procesorskoj razini postoje 4 razine privilegija (popularno nazvane prstenovima) i odatle nazivi ring0, ring1, ring2 & ring3. OS bi trebao ovako izgledati:

Ring 0: Kernel (memory management, scheduling i sl.)
Ring 1: Sistemski servisi (Driveri, Filesystem)
Ring 2: Sistemske extenzije (SQL, mrezni servisi)
Ring 3: Korisnicke aplikacije

Ili ga je barem Intel tako dizajnirao :o)

Svaki proces koji je pokrenut u nekom prstenu moze pristupiti podacima u istoj ili nizoj razini privilegija, ili explicitno dozvoljenim sistemskim pozivima ("call gate").

Ako je pozvan neki sistemski poziv, on ce vjerojatno biti pokrenut u nekom prstenu sa vise privilegija (npr. da dozvoli aplikaciji da pise na disk koristeci write() sistemski poziv).

Direktan pristup hardveru se kontrolira u prstenu sa najvise privilegija (ring0) i najcesce je ogranicen na drivere.

Windoze koriste samo 2 prstena - ring0 i ring3. U ring0 rade driveri gdje imaju slobodan pristup portovima, memorijom (cijelom memorijom, nema vise pisanja na "nedozvoljenu" memorijsku lokaciju) i sl. Svi ostali programi u pravilu rade u ring3.

M$ je odlucio koristiti samo 2 prstena zato jer je sama operacija skakanja izmedju prstenova vrlo "skupa" u smislu procesorskih taktova, tako da bi skok ring3->ring2->ring1->ring0 bez problema funkcionirao, ali bi bogami bio jako spor.

Kao sto ste odmah i sami mogli uociti, ring0 je najzanimljiviji od svih prstenova. Virusopisci su bili ti koji su prvi otkrivali rupe OS-a koje bi se mogle iskoristiti za dobivanje ring0 privilegija.

Medju prvima su bili virusi CIH (AKA Chernobyl) I Sexy koji su modificirali IDT. Kasnije su otkriveni mnogo elegantniji nacini skakanja u ring0 i danas ih postoji mislim oko 20-ak (callgate, faultgate, intgate, trapgate,VMM, IRQ, TCB da nabrojim najpopularnije) za win9x. IDT nije vise jako preporucljiv jer postoje programi (frogsice recimo) koji je mogu zastiti od instaliranja vlastitih interrupta.

Iako ove metode vrijede samo za win9x, vec se polako mogu nazreti teznje za ulaskom u ring0 i na NT-kernel baziranim windozima. Jedini nacin za koji ja znam jest preko CALLGATE.DLL kojeg koriti Adonai virus i kojeg mozete naci u 29a #4 i, ofkors, preko vlastitih drivera (*.VXD)

Detekciju mozes koristiti preko WM_QUERYENDSESSION poruke, a sto se tice abortiranja shutdowna, znam za API AbortSystemShutdown() ali on radi samo na NT. Sjecam se da sam u DDK vidio neki VMM servis za tako nesto ali se trenutno ne mogu sjetiti kako se zove. DDK dokumentacija je ionako prilicno zbrckana, pa ako nadjem, javit cu ti.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Prekid gasenja racunara?

[ Pregleda: 3183 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.