[pso] [tema1][win]Mare performanta
omar Chouydary
chouydary at yahoo.com
Wed Mar 28 19:58:26 EEST 2007
Tocmai mi-am "resetat" masina virtuala de windows, in sensul ca am luat din nou arhiva si am pus-o de la 0, doar mi-am copiat codul sursa in ea, si am facut un mic test, sa vad daca de data asta adresa e buna, dar...
In .st si .ls am urmatoarele rezultate in tabla K..Shadow fata de Ke...:
k..->ls = 296
k...->st = 80831b40 (deci ambele bune)
In schimb pt shadow:
kS..->ls = -2138441784
kS...->st = 0 (deci null)
(evident am initializat cu get_shadow() inainte tabela Shadow)
So ceva e foarte ciudat... daca .st de la shadow e NULL?? cum se apeleaza acele servicii sistem, mai tare... cum facem noi sa retinem fostele apeluri sistem din shadow?
De asemeni, daca facem cum zicea dl. profesor, cel putin la mine imi apare acel maret ecran BSOD din cauza ca am atat Ke... cat si Ke..Shadow pointand catre acelasi pointer( adica daca copiez sa zicem din new_st (noua mea tabela pt .st) in Ke.. si KeShadow)
Any ideeas pls?
Razvan Deaconescu <razvand at cs.pub.ro> wrote:
omar Chouydary wrote:
> Cred ca am reusit o chestie mare de tot... nu stiu exact cum dar imi cam
> dau seama. Tot testand ca sa vad unde am bug-uri, etc.. cred ca am
> schimbat valoarea tabelelor, a.i. la iesire,
> KeServiceSystemTableShadow.st si ceilalti membrii (spt, ct si ls) imi
> pointeaza foarte aiurea...in sensul ca in ls am -2321312312312 (adika
> ceva prost) si in .st am ceva de genul "0". Si de aici si celelalte
> bug-uri care eu credeam ca sunt de la altceva. Am incercat cu restart al
> windows-ului din masina virtuala, dar isi pastreaza aceste valori in
> tabela Ke....Shadow. E normal sa faca asta? Eu credeam ca dau un restart
> si gata, isi ia pointerii de unde trebuie. Cum isi ia WNT-ul pointerii
> la pornire pt asta?
hmm, ultra weird ... nu ar trebui sa se intample asta ... ai scos
modulul din kernel dupa repornire (desi nu ar trebui sa aiba legatura)?
> Asta e un citat din Windows Internals: "As you'll see in Chapter 6, each
> thread has a pointer to its system service table" So sa inteleg de aci
> ca fiecare thread are tabela sa ... deci ar trebui s-o ia la pornirea
> sistemului de undeva... asta nu ma prind de unde..
Exista o singura tabela pe sistem. Adica un vector de tabele
(KeServiceDescriptorTable) si un vector de tabele shadow
(KeServiceDescriptorTableShadow)
> si cum de dupa
> restart isi pastreaza valorile eronate. Mai zice ceva pe aici, ca dupa
> ce se face primul apel din GDI sau User.dll, abia atunci se pun
> pointerii in Shadow.. asa e? In fine, as vrea o mica lamurire in acest
> caz, thx.
Nu stiu sa-ti spun exact. Iti recomand doua surse de documentare:
Undocumented Windows NT:
http://www.windowsitlibrary.com/Documents/Book.cfm?DocumentID=356
(capitolul de adaugarea de apeluri de sistem)
sau, alternativ, modalitatea de implementarea a KeAddSystemServiceTable
din surse:
http://cs.pub.ro/~pso/lxr/source/base/ntos/ke/miscc.c?v=wrk-1.2#729
Razvan
P.S.: incearca sa spargi mesajele tale in paragrafe, lasa niste randuri
libere intre idei; sunt foarte dificil de urmarit; merci
_______________________________________________
pso mailing list
pso at cursuri.cs.pub.ro
http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
---------------------------------
Finding fabulous fares is fun.
Let Yahoo! FareChase search your favorite travel sites to find flight and hotel bargains.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/pso/attachments/20070328/023b80a5/attachment.htm
More information about the pso
mailing list