[pso] Nelamuriri Tema1

Marius Nicolae mariusn007 at gmail.com
Fri Apr 4 13:57:40 EEST 2008


Salut Andrei,

2008/4/4 Flucus Andrei <andrei.flucus at gmail.com>:
> Buna ,
>
> Am si eu niste nelamuriri legate de enuntul temei 1 , si nu prea am la cine
> sa apelez, prin urmare as avea nevoie de putin ajutor :
>
> 1. In enuntul temei scrie : "Monitorizarea se refera la faptul că modulul va
> loga în userspace informaţii despre procesul şi apelul de sistem: numărul
> apelului de sistem, parametrii apelului de sistem, codul de eroare întors de
> apelul de sistem (cel original), pid-ul procesului." , ca urmare lista care
> tine informatiile despre procesele monitorizate trebuie sa contina si
> parametrii apelului de sistem(pt linux de exmplu ar fi un camp de tip struct
> pt_regs)sau e de ajuns sa contina pid-ul procesului ,syscall number si error
> code deoarece access la param apelului de sistem interceptat am doar in fct
> de interceptare si adaugarea in lista se face pe optiunea de start
> monitoring , nu pe optiunea de interceptare fapt ce ar presupune ca eu sa
> retin param apelului de sistem intr-o variab externa ca sa o pot folosi la
> adaugarea in lista.
>
> 2. Fct de logare log_syscall din sci_lin.h  face logarea in momentul
> interceptarii sau pe optiunea de start monitoring cand se itereaza prin
> lista si se cauta intrarea pt pid-ul necesar(daca e diferit de 0) si se
> afiseaza informatiile.
>
> 3.Un apel de sistem ce a fost interceptat , dupa care a fost deinterceptat ,
> mai poate fi interceptat din nou , in sensul ca la deinterceptare se
> reseteaza intrarea in vector ce retine apelurile interceptate pt respectivul
> apel , sau odata interceptat nu mai poate fi interceptat din nou chiar daca
> in prealabil a fost deinterceptat.
>

Pe scurt, traducere din enunt in pseudocod:

Monitorizare inseamna:
original_syscall[syscall_no] = syscall_table[syscall_no];
syscall_table[syscall_no] = interceptor;

De-monitorizare inseamna:
syscall_table[syscall_no] = original_syscall[syscall_no];

Daca ai pornit monitorizarea pentru un apel de sistem, inseamna ca de
acum incolo o sa fie apelat interceptor in locul apelului original.
Acestea fiind zise, de acum poti incepe interceptarea.

Interceptare inseamna ca in my_syscall marchezi faptul ca un syscall
trebuie interceptat
should_intercept[syscall_no] = TRUE;

iar in interceptor ai
if (should_intercept[syscall_no]) {
    log(...);
}

De-interceptare inseamna
should_intercept[syscall] = FALSE;

Sper ca ti-am raspuns la o parte din intrebari .

>
> PS: O intrebare offtopic : Eu sunt anu 5 , si daca cumva nu reusesc sa
> trimit suficiente teme pana pe 11 aprilie ca sa promovez examenul , se poate
> sa mai trimit teme si dupa aceasta data pt ca sa fiu nevoit sa le trimit pe
> timpul vacantei de vara.
>
> Multumesc mult ,
>
> Andrei
>
> _______________________________________________
>  pso mailing list
>  pso at cursuri.cs.pub.ro
>  http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>
>


More information about the pso mailing list