Šta je novo?

BSOD pitanje

nexilion

Slavan
Učlanjen(a)
14.08.2007
Poruke
403
Poena
319
Moze li neko da napise neki kraci kod u nekom programskom jeziku (pozeljno nesto iz asortimana Visual Studija 🙂) koji ce izazvati BSOD.
Ne pokusavam da napravim virus, ne pokusavam da brisem fajlove korisnika ni da mu oborim sistem, samo mi treba programce koje ce pri startovanju izazvati BSOD bez ikakvih posledica (posle restarta sve da bude ok). Da ne misle odmah ljudi da hocu da unistim nekome nesto 😀
Do BSOD-a sam dosao samo jednom, drajveri za graficku su me zeznuli a hteo bih da vidim konkretno sta moze da ga izazove, tj. da ga ja izazovem programskim kodom.
Naravno, ovo je otvoreni poziv za >> genuine << koji se hvalio kako kad on programira ako napravi gresku, odmah dobije BSOD, tako da pretpostavljam da mu nece biti mnogo tesko da to nabrzaka odradi, posto se vec dosta sretao sa time 🙂.
 
Poslednja izmena:
Skini BSOD screensaver i stavi vreme 1 minut ili pokusaj da gas tavis u startup 🙂
 
Skini BSOD screensaver i stavi vreme 1 minut ili pokusaj da gas tavis u startup 🙂

Hvala na pomoci, bez tebe ne bih uspeo :d. Vidi se sta znaci strucan odgovor, nema sta.
Ovo zasluzuje da ode u potpis, ali nisam od onih koji stavljaju provale drugih u potpis samo da bi im se smejali.😀
 
Poslednja izmena:
Genuine verovatno radi gaficke drivere za nvidiu, a oni su u kernel space-u, a tamo i najmanja brljotina izaziva BSOD.
Secam se davno, da postoji neki API poziv koji izaziva BSOD, ali se sad ne secam da li je to bilo na Win9x ili kasnije. Uglavnom nije pravi BSOD vec samo neki test rada kernela ili tako nekako. Ako iskopam code okacicu ovde.
 
Poslednja izmena:
Pa da, gledao sam na netu, a i kao sto sam rekao jedini BSOD koji se meni dogodio, bio je zbog drajvera, i to ATI. Ako nadjes nesto, okaci.
Inace nalazio sam po netu neke "registry tweakove" koji kao upises u Registry string sa nekim CrashOn... restartujes komp, pritisnes kombinaciju tastera i dobijes BSOD. Nisam probao mada cisto sumnjam da bi to radilo, a i ako radi onda je bezveze, tj. nije mi interesenatan metod koji je doveo do toga (a i ko se pa seti da stavi opciju Skrsi me u Win? 😀).

Kad smo vec kod drajvera, gde se oni programiraju, koje okruzenje, programski jezik (C/C++ ili...) i slicno?
 
Poslednja izmena:
Ovaj prvi clanak je ono sto sam rekao, postavljanje CrashOnCtrlScroll u Registry, ali to nije to.

OSR obecava, ali ne daju kod?

A ovo sa UDP je cini mi se ne izazvan nego isfoliran BSOD.
 
Jes to prvo si vec rekao, preskochio sam taj post. OSR nisam probao da pokrenem, mada mozda bi ti dali source kad bi ih pitao 🙂
Verovatno bi izazvao BSOD kada bi cackao po kernelu, al nisam bas siguran kako 🙂

A ovo UDP jeste zezanje, al nije losa fora 😀
 
Mislim da mozes da izazoves BSOD kada radis sa ReadFile ili WriteFile i to sa OVERLAPPED strukturama. Overlapped buffer mora postojati dok se read/write operacija ne zavrsi. Ukoliko obrises buffer moze se desiti da dobijes BSOD.

Takodje, mozda mozes da se igras sa directshow videom i da kreiras neki filter koji bi dobio frame sample ciji je allocator smestio frame u video memoriji. Posto ces dobiti pointer na to parce video memorije onda bi buffer overrun trik mozda izazvao BSOD, zato sto je driver graficke u kernelu.
 
Pa ako genuine pise drajvere, onda je najkompetentniji da da odgovor na tvoje pitanje. Ja nisam nikad pisao drajvere, ali da probam da ti pojasnim kako to ide. Ove mozes da procitas nesto o Ring (i Ring 0)

http://en.wikipedia.org/wiki/Ring_(computer_security)

Da bi izazvao BSOD, potrebno je da radis u unmanaged okruzenju (c, c++), dok je to neizvodljivo u managed okruzenju (vb.net, c#). Na sledecim linku imas primer kako se pise driver u C++

http://www.mactech.com/articles/develop/issue_04/device_driver.html

BSOD bi najlakse mogao da izazoves nepravilnim koriscenjem pointera, tako sto bi recimo prepisao greskom sistemsku memoriju. Taj kod treba da radi u kernel modu (kao npr drajver), dok je u user modu to tesko izvesti. Kazem tesko, zato sto su postojale API funkcije koje su izazivale BSOD i dok se izvrsavaju u user modu (ja sam znao za jenu - CreateFileMapping, posaljes joj za dwMaximumSizeHigh vrednost vecu od velicine page fajla), ali vrlo verovatno je da je neki OS patch to zakrpio).

Znaci, ako hoces da ides na "siguricu", moraces da ides na c++ kod u kernel modu. Moje znanje o ovome je vise teoretsko neko prakticno, ali nadam se da sam ti makar malo pojasnio kojim putem trebas da ides.

Ako ti je pak zelja da samo izazoves BSOD, onda mozes da probas i ovaj registry "tweak" 🙂

http://articles.techrepublic.com.com/5100-10878_11-5710338.html?part=rss&tag=feed&subj=tr
 
hehe,
evo ja bas sada muku mucim sto mi jedan projekat za faks (operativni sistemi na etfu) baca BSOD kada ga previse opteretim 🙂. Doduse, BSOD se dobija samo u win7, dok XP regularno gasi proces.
 
@Joy: Pogledacu ovo sto si napisao. Takodje me interesuje makar otprilike da se upoznam sa pravljenjem drajvera, kako to ide. Zasad nisam bas na tom nivou pozavanja ali me zainteresovalo da vidim sta i kako. Inace, bas u C-u i C++ i radim.
Samo nemojte vise ovaj registry tweak da isticete, bas je bezveze i nije to to.

@Sinter: E, da zanimljivo je to sa Windowsom 7. I ja dok sam radio neke programcice u C/C++ (isto za fax), Win 7 je smatrao da su ono Stopped responding i ubijao ih i Searchovao for a solution. Dok su svi normalno radili na XP-u. Tako da sam downgradeovao na XP. Windows 7 ima problema sa time, cak i pri instaliranju programa zeza nesto. Mali offtopic, ali ce mozda nekome koristiti savet da radi na XP-u, a ne da zbog sedmice gubi zivce.
 
Nazad
Vrh Dno