[pso] Tema 1 Windows apeluri de sistem

Andrei Costin pso@cursuri.cs.pub.ro
Thu, 17 Mar 2005 05:55:29 -0800 (PST)


ARD> din cate am inteles in urma operatiilor prezentate la curs:

ARD> _asm mov old_stack, ebp

ARD> _asm add old_stack, 8

ARD> _asm sub esp, params

ARD> _asm mov new_stack, esp



ARD> memcpy (new_stack, old_stack, params);



ARD> ar rezulta ca old_stack si new_stack sunt pozitii in care in mod

ARD> normal vom gasi parametri (old_stack este pointer la parametrii

ARD> originali si new_stack la zona noua alocata pentru apelul serviciului

ARD> de sistem initial)



ARD> am incercat sa caut si in sus in jos la ambele stive (in forma *((int

ARD> *) old_stack + i) (i este negativ pt cautare in jos)

ARD> dar nu este nici urma de parametri (desi ar trebui cautat numai in

ARD> sus); care este explicatia? se intampla ceva cu ebp? mai trebuie pus

ARD> ceva in continuare la new_stack?

Aici e problema ;) - incearca old_stack cu i pozitiv (ptr modul in care
cauti cu "*((int *) old_stack + i)", i este numarul de argumente, deci nu uita sa faci
"i<params/4" ),
ca sa cauti in sus :)

(e putin cam cu picioarela in sus si capul in jos toate chestia asta
cu "i negativ ptr creste in jos" si faptul ca "stiva creste in jos" :) )


ARD> o mica intrebare este care registru retine adresa stivei user dinainte

ARD> de int 0x2e? ebx sau edx; in curs si in unele locuri pe Internet este

ARD> ebx, dar in test este edx; si mai ciudat este ca atunci cand este edx

ARD> se apelata functia interceptor si totul decurge ok (mai putin

ARD> parametrii); daca in schimb inlocuiesc cu ebx, nu mai intra in aceasta

ARD> functie (KiSystemService face ceva aici?).


din cate am citit si vazut din exemple si dezasamblari pe net este 'edx'



Best regards and respect,
 Andrei Costin

_______________________________
Manifest - ".MD - My Domain!"



		
__________________________________ 
Do you Yahoo!? 
Yahoo! Sports - Sign up for Fantasy Baseball. 
http://baseball.fantasysports.yahoo.com/