[ reiser @ 11.09.2003. 14:40 ] @
Zna li neko nesto vise o ring 0 programiranju? Da li to moze da se izvede is Deplhia, i kako to da izvedem ako je moguce?
[ tOwk @ 11.09.2003. 21:27 ] @
Ring0 je programiranje kao i svako drugo, samo što onda tvoj proces može da izvršava i neke „privilegovane“ instrukcije (učitavanje LDT-a, GDT-a, TSS-a, bezbrižnu šetnju po memoriji itd.).

Ne znam jedino kako pokrenuti Delphi program sa takvim privilegijama, ali da bi to imalo smisla, morao bi da koristiš pokazivače u velikoj meri, kao i razne ulazno-izlazne instrukcije pomoću asemblera ili već direktnog „ubrizgavanja“ mašinskog koda (ako to Delphi omogućava).

Na modernijim Windows operativnim sistemima je ovo nedopušteno, tako da sumnjam da ćeš imati neke vajde od toga. Zapravo, prilično je i besmisleno to raditi — Delphi je programski jezik koji ima određenu namenu, a to sigurno nije pisanje programa koji će raditi u ring0.

Što se tiče same aktivacije nultog prstena, sve što treba da uradiš je da postaviš par bitova u registrima procesora ;-)
[ tOwk @ 11.09.2003. 21:30 ] @
Usput, ovde imaš objašnjeno kako da dođeš do podrobnije dokumentacije: http://www.elitesecurity.org/tema/28147/
[ Rapaic Rajko @ 15.09.2003. 10:08 ] @
Citat:
tOwk:
Ring0 je programiranje kao i svako drugo, samo što onda tvoj proces može da izvršava i neke „privilegovane“ instrukcije (učitavanje LDT-a, GDT-a, TSS-a, bezbrižnu šetnju po memoriji itd.).

Ne znam jedino kako pokrenuti Delphi program sa takvim privilegijama, ali da bi to imalo smisla, morao bi da koristiš pokazivače u velikoj meri, kao i razne ulazno-izlazne instrukcije pomoću asemblera ili već direktnog „ubrizgavanja“ mašinskog koda (ako to Delphi omogućava).

Na modernijim Windows operativnim sistemima je ovo nedopušteno, tako da sumnjam da ćeš imati neke vajde od toga. Zapravo, prilično je i besmisleno to raditi — Delphi je programski jezik koji ima određenu namenu, a to sigurno nije pisanje programa koji će raditi u ring0.

Što se tiče same aktivacije nultog prstena, sve što treba da uradiš je da postaviš par bitova u registrima procesora ;-)


Huh, otkud ovoliko nipodastavanje Delphi-ja...?
Da rascistimo, Delphi je naslednik TurboPascal-a (sa mnogim prosirenjima itd. itd.). Da li ti imas predstavu, t0wk, sta se sve nekad radilo TurboPascal-om?

Za svaciju informaciju, Delphi ima pointere (pogledajte malo VCL), pod jedan, ugradjen assembler (kljucna rec 'asm') pod dva, i pod tri, podrzava i direktno 'ukucavanje' masinskog koda u hex obliku (kljucna rec 'inline'). Delphi-jev asembler podrzava i alias-e; 'ladno mozes da pozoves iz assemblera neku funkciju koju si napravio u visem jeziku 'tu negde 20-tak linija iznad'.
I da ne zaboravim: TurboPascal-ov asembler je imao i pseudoregistre za lakse pozivanje sistemskih interapta itd. itd.; ne znam da li to radi i u Delphi-ju...
Pozdrav

Rajko
[ tOwk @ 15.09.2003. 22:18 ] @
Citat:
Rapaic Rajko:
Huh, otkud ovoliko nipodastavanje Delphi-ja...?
Da rascistimo, Delphi je naslednik TurboPascal-a (sa mnogim prosirenjima itd. itd.). Da li ti imas predstavu, t0wk, sta se sve nekad radilo TurboPascal-om?

Čak naprotiv, čini mi se da uopšte nisam nipodaštavao Delphi. Poznato mi je da sadrži sve pomenuto (asm, pokazivače, mašinski kod), ali i dalje Delphi nije pravljen za pisanje programa u ring0, pre svega zato što je pravljen za Windows, a Windows programi ne mogu da pristupe ring0 bez dozvole samog operativnog sistema.

Čak, čini mi se da sam sasvim lepo rekao da on generiše mašinski kod koji se svakako može iskoristiti i u ring0, a postavio sam vrlo konkretno pitanje kako to uraditi (tj. konstatovao sam da ne znam kako pokrenuti Delphi program u ring0).


Da to bude još konkretnije:
Kako izmeniti CR* i TSS tako da dobijeni Delphi program radi u ring0? Šta je potrebno od privilegija na sistemu („Administrator“ sigurno nije, valjda „System“).

Svakako da se ne bih usudio da kažem da je nemoguće koristiti mašinski kod koji generiše Delphi u ring0, ali je pitanje kako ga pokrenuti (pošto je nemoguće iz programa koji nije u ring0 preći u ring0 pa sve da unosiš i asm i mašinski kod — takvoj zaštiti ring0 i služi).

Pošto ne sumnjam da bolje poznaješ Delphi od mene, ovo su pitanja na koja treba da daš odgovor (mada, ovo može biti više vezano za Windows, nego za Delphi, pošto u Windows-u jedino drajveri mogu da uskoče u ring0).
[ Rapaic Rajko @ 16.09.2003. 08:50 ] @
E, pa dobro, o 'ring 0' programiranju ne znam nista; samo sam 'branio' Delphi...

Takodje, znam da se ni iz jednog Borlandovog proizvoda ne mogu praviti drajveri. Neko je ovde objasnio zasto: valjda zbog drugacije strukture generisanog fajla za drajver (Microsoft, naravno; @[email protected]#%$#%) koju 'obican' kompajler ne moze da izgenerise.
Poz

Rajko