[pso] Despre [tema1]Windows - KeServiceSystemTable
omar Chouydary
chouydary at yahoo.com
Sun Mar 25 23:33:52 EEST 2007
Referitor la ls, avand in vedere ca in tema zice ca putem considera ca MY_SYSCALL_NO este mai mare decat nr. oricarui apel de sistem , putem spune ca ls=MY_SYSCALL_NO+1 sau gresesc?
Altceva care ma nelamureste, vreau sa testez si eu tema, sa vad daca macar functia mea my_syscall este apelata, adika sa vad ca am reusit sa pun noua tabela, etc (am folosit si WPON si tot)... Cred ca undeva gresesc pt ca nu prea vrea, adica imi returneaza ceva f. aiurea. Am facut in felul urmator:
Am copiat functiile din test.c adika syscall si vsyscall si am apelat vsyscall(MY_SYSCALL_NO, 3, 1, 2, 3) de ex. E ok asa?
Inca ceva, ca sa nu mai dau alt mail dupa. Pt copierea noilor tabele, este suficient sa imi fac o noua structura std cu noua tabela atat pt cea principala si pt cea shadow dupa care sa fac ceva de genul:
WPOFF();
KeServiceDescriptorTable[0]=newKSD;
KeServiceDescriptorTableShadow[0]=newKSDShadow;
WPON();
unde newKSD si newKSDShadow sunt noile tabele, cu tot cu my_syscall inclus
sau mai e ceva la mijloc?
Razvan Deaconescu <razvand at cs.pub.ro> wrote: omar Chouydary wrote:
> Puteti preciza exact semnificatia fiecarui camp din structura std? Am
> cam facut tema.. dar nu stiu sigur ce semnificatie are fiecare camp din
> cei definiti in sci.h:
> struct std {
> void **st; /* service table */ -> aici e clar
> int *ct; /* counter table */ -> aici sa inteleg ca e vb de
> nr. tabelei (0-3) ?
nu, e vorba de un contor de apeluri; poti sa-l pui pe NULL; nu e folosit
> int ls; /* last service no */ -> aici e clar
vezi ca nu e indexul ultimului serviciu, ci numarul de apeluri valide
> unsigned char *spt; /* service parameter table */ -> aici nu stiu
> cu cat trebuie initializat
> };
>
spt - service parameter table - este un vector de dimensiune std.ls;
fiecare element contine numarul de octeti ocupat de parametrii apelului
asociat; altfel spus pe pozitia 0 a vectorului spt se gaseste spatiul
ocupat (numar de octeti) de parametrii apelului de sistem cu indexul 0;
pe Windows este nevoie de asa ceva din cauza faptului ca exista un numar
mare de parametri ai apelurilor de sistem si nu pot fi transmisi prin
registre
nici sursele nu sunt foarte "enlighting", dar pot oferi o noua
perspectiva :-)
http://cs.pub.ro/~pso/lxr/source/base/ntos/inc/ke.h?v=wrk-1.2#579
Razvan
_______________________________________________
pso mailing list
pso at cursuri.cs.pub.ro
http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
---------------------------------
It's here! Your new message!
Get new email alerts with the free Yahoo! Toolbar.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/pso/attachments/20070325/53fe6f8b/attachment.htm
More information about the pso
mailing list