opet syscally

Dan Lukes dan at obluda.cz
Fri May 7 02:59:23 CEST 2004


Divacky Roman wrote:

>>Jedna se mi o to, ze bych chtel ve svem modulu napichnout vsechny
>>syscally, abych mohl sledovat jak je procesy volaji. Nechal jsem se trochu
>>inspirovat systemem CerbNG (http://cerber.sourceforge.net/)
>>
>>Nejdrive si ulozim vsechny stavajici handlery syscallu a nasmeruji je na
>>vlastni obsluhu:

>>Vsechno funguje krasne az do chvile, kdy se pokusim modul odstranit - pri
>>tom nastavuji puvodni obsluhy:

>>a system spadne.

>>- proc system spadne prave pri unloadu modulu


	Muj tip je, ze behem provadeni nekterych syscallu muze dojit ke 
kontext-switchi (typicky wait, kdyz podminka neni splnena, zpuzobi, z 
eproces ceka a mezitim probihaji procesy jine). Pokud v teto chvili 
dojde k odloadovani modulu, tak sice dojde k "naprave" vsech 
syscall-pointeru, ale nedojde k uprave zasobniku podobne zastavenych 
procesu. Presto ale dojde k uvolneni pameti s vasim kodem.

	Takze - proces, ktery cekal na "wait" skonci - a protoze do kodu "wait" 
se nedostal primo, ale pres vas kod, tak se pokusi, pri navratu, skocit 
na prislusne pametove misto - to ale uz neexistuje (prinejemensim ne se 
smysluplnym obsahem). A v tomto okamziku dojde k padu.

	Pokud je tato teorie spravna, pak si budete muset delat pro kazdy 
syscal "carky" za vstup (a mazat je pri vystupu), pricemz odstraneni 
"presnerovani" pro danny syscall neni mozne, pokud je pocet carek 
nenulovy (a celkovy unload modulu neni mozny, pokud je jedinny syscall 
presmerovany).

	Podotykam, ze je to ciste teoreticky vykonstruovana teorie - takze si 
to musite skutecne vyzkouset.

					Dan




More information about the Users-l mailing list