[pso] [tema1][win]Mare performanta
Razvan Deaconescu
razvand at cs.pub.ro
Wed Mar 28 21:15:58 EEST 2007
omar Chouydary wrote:
> 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)
Nu ar trebui sa fie nici o problema sa puncteze campul st din Ke... si
Ke...Shadow catre aceeasi tabela.
> Any ideeas pls?
Tocmai am discutat azi la laboratorul cu Catalin Morosan. El a avut o
problema la o tema care si pe mine m-a lasat un pic rece cand am
vazut-o. Intr-un tarziu si-a dat seama de ce o patea. El rula de pe
kernel-ul compilat de noi.
ATENTIE: kernel-ul ala e un model ca sa se vada functional un kernel
compilat de Windows; din pacate, NU este acealasi kernel cu cel care
este nativ pe Windows 2003 SP1; asta inseamna ca este o deosebire
deosebirea care ataca direct tema1 este ca, din motive necunoscute, s-a
inversat ordinea celor doua tabele; in sursele kernel-ului (adica ce am
compilat noi), avem prima Ke... si pe urma Ke...Shadow:
http://cs.pub.ro/~pso/lxr/source/base/ntos/ke/kernldat.c?v=wrk-1.2#195
pe cand, daca folositi livekd pe kernel-ul initiakl (nu cel compilat de
noi), veti observa ca ordinea e inversata:
kd> dd nt!KeServiceDescriptorTable
808a83a0 808278fc 00000000 00000128 8080374c
808a83b0 00000000 00000000 00000000 00000000
808a83c0 00002730 bf89c24d 00000000 00000000
808a83d0 f9ddb4c0 817cc9f8 81611a20 81611a20
808a83e0 00000000 00000000 019c39b0 00000000
808a83f0 e798f4f0 01c75936 00000000 00000000
808a8400 00000000 00000000 00000000 00000000
808a8410 00000000 00000000 00000000 00000000
kd> dd nt!KeServiceDescriptorTableShadow
808a8380 808278fc 00000000 00000128 8080374c
808a8390 bf9a3000 00000000 00000299 bf9a3d08
808a83a0 808278fc 00000000 00000128 8080374c
808a83b0 00000000 00000000 00000000 00000000
808a83c0 00002730 bf89c24d 00000000 00000000
808a83d0 f9ddb4c0 817cc9f8 81611a20 81611a20
808a83e0 00000000 00000000 019c39b0 00000000
808a83f0 e798f4f0 01c75936 00000000 00000000
(decupat din solutia pentru laboratorul 1:
http://cs.pub.ro/~pso/index.php?section=Laboratoare&file=01.%20Introducere#Solutii)
Daca cineva a mai incercat asa ceva sa stie ca e posibil sa apara
inconsistente - NU folositi kernel-ul compilat de noi la lucrul cu
temele - cu atat mai mult la lucrul cu tema 1; o sa adaug chestia asta
si la FAQ; nu ne-am dat seama ca o sa fie folosit modulul compilat de
noi pentru realizarea temelor.
Razvan
More information about the pso
mailing list