[pso] [Tema1][Win] GetUserOf

Marius Poke mariusp55 at yahoo.com
Sat Mar 27 19:33:33 EET 2010


Am rezolvat problema intre timp. Si nu are nici o legatura cu acel PsSetCreateProcessNotifyRoutine. Era o chestie destul de stupida, un user privilegiat poate sa faca demonitorizare pentru un proces care are alt user. Acesta era motivul pentru care imi dadea STATUS_ACCESS_DENIED in loc de STATUS_INVALID_PARAMETER.

Marius





________________________________
From: Marius Poke <mariusp55 at yahoo.com>
To: Proiectarea Sistemelor de Operare <pso at cursuri.cs.pub.ro>
Sent: Sat, March 27, 2010 6:49:21 PM
Subject: Re: [pso] [Tema1][Win] GetUserOf


Oki, iti imaginezi ca am vazut ca s-a mai vorbit despre asta si ca sa vezi chiar am citit ce s-a discutat. Alexandra a deschis firul de discutie cu o intrebare la care din cate am vazut eu nu a primit raspuns. Zi-mi te rog ce legatura are PsSetCreateProcessNotifyRoutine, cu intrebarea mea? La fel si pentru intrebarea Alexandrei, ce legatura are? Am folosit rutina respectiva care inregistreaza un handler care se apeleaza la crearea/moartea unui proces. In rutina respectiva pt. create == false (deci cand moare un proces) scoti pid-ul procesului respectiv din lista de procese monitorizate. Dupa ce fac acest lucru incepe testul urmator care incearca sa-mi opreasca monitorizarea pt. pid-ul procesului care ocmai a murit. In functia my_syscall pe case-ul cu REQUEST_STOP_MONITOR incep sa fac verificari de consistenta: 
- daca pid = 0 si userul nu e privilegiat;
- daca pid != 0: 
    - verific daca pid-ul este valid (acest lucru il fac cu functia GetUserOf, functie care pentru un pid a unui proces care tocmai a murit imi da STATUS_SUCCESS);

Intrebarea mea este, cum pot sa verific validitatea unui pid ca sa nu am aceasta problema ??

Mersi,
Marius

PS: scuze tonul dar chiar sunt putin nervos ;)





________________________________
From: Marius Viorel Grigoras <grigorasmariusviorel at gmail.com>
To: Proiectarea Sistemelor de Operare <pso at cursuri.cs.pub.ro>
Sent: Sat, March 27, 2010 6:27:28 PM
Subject: Re: [pso] [Tema1][Win] GetUserOf

Salut,

Trebuie sa folosesti  PsSetCreateProcessNotifyRoutine.
S-a mai discutat pe tema asta aici[1].

Spor,
Vio.

[1] http://cursuri.cs.pub.ro/pipermail/pso/2010-March/003867.html


În data de 27 martie 2010, 18:13, Marius Poke <mariusp55 at yahoo.com> a scris:

>
>Putem folosi GetUserOf() pentru a verifica validitatea unui pid? Presupun ca functia intoarce ceva diferit de STATUS_SUCCESS in cazul in care pidul nu exista. 
>>
>Daca se poate folosi asa atunci am o problema:
>
>Verifica daca mai exista pid-ul pid:
>if ( (status = GetUserOf(pid, &pid_user)) != STATUS_SUCCESS) { ... }
>
>Verificare daca procesul curent are acelasi utilizator cu procesul cu pid-ul pid:
>>
>if (!CheckUsers(crt_user, pid_user)) {...} // crt_user este o variabila de tip PTOKEN_USER
>
>Ei, dupa ce un proces este sters, intra in handlerul respectiv, dupa care in urmatorul test (cel cu stop last_child) trece de prima verificare (cea pt. pid valid) dar nu trece de a doua.
>
>Poate sa-mi explice cineva ce gresesc?
>
>Mersi,
>Marius 
>
>
>_______________________________________________
>>pso mailing list
>pso at cursuri.cs.pub.ro
>http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>
>


      
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/lurker/list/pso.html/attachments/20100327/6c870a6b/attachment.htm>


More information about the pso mailing list