[pso] [Tema1][win] Problema la interceptare sys_call
Stefan Bucur
stefan.bucur at gmail.com
Wed Apr 2 12:38:56 EEST 2008
2008/4/2 Razvan Deaconescu <razvand at cs.pub.ro>:
> On Wed, 2008-04-02 at 09:59 +0300, Marius Nicolae wrote:
> > 2008/4/2 Alex Drenea <alexdrenea at gmail.com>:
> > > Incredibil.... stiam eu ca e ceva extrem de simplu... Chiar daca
> > pentru
> > > noua structura KeSDT aveam grija sa aloc vectorii cu dimensiunea
> > > MY_SYSCALL_NO + 1 din motive care nu mi le pot
> > > imagina acum, setam ls-ul la MY_SYSCALL_NO.
> >
> > Din comentariile din sursa rezulta ca ls ar fi "last system call
> > number" deci ai crede ca trebuie sa pui MY_SYSCALL_NO
> > dar de fapt este ceva de genul "lenght of syscall table" deci trebuie
> > pus MY_SYSCALL_NUMBER+1
>
> Da, sursa nu este intuitiva in denumire. Documentatia oficiala pentru
> structura tabelei de descriptori Windows o reprezinta sursele[1].
>
> Dupa cum puteti observa, campurile sunt denumite oficial:
> Base - tabele de servicii
> Count - tabele de debug
> Limit - dimensiunea tabelei de servicii (_nu_ ultimul apel din tabela)
> Number - tabela de dimensiuni ocupate de argumentele fiecarui serviciu
>
> Razvan
>
> [1] http://cs.pub.ro/~pso/lxr/source/base/ntos/ke/kiinit.c?v=wrk-1.2#391
>
>
Cu chestia asta am pierdut si eu toata seara de ieri (plus chestia ca
faceam MY_SYSCALL_NO & 0x00000FFF + 1 fara sa-mi dau seama ca & are
precedenta mai mica ca + (blush), si ma umpleam de BSOD), si am gasit
solutia in LXR. Ca un mic feedback, as sugera ca slide-urile din
cursul de Apeluri de sistem referitoare la interceptarea apelurilor pe
Windows sa fie actualizate si sa contina nume sugestive de campuri,
impreuna cu explicatiile aferente. De exemplu mi-a luat ceva sa ma
prind ca de fapt Count este non-NULL doar cand flag-ul DBG este
definit la compilare (ceea ce nu e cazul pe un kernel de productie).
Numai bine,
Stefan Bucur
More information about the pso
mailing list