• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    KOSTEJArchitektura MS Windows — xp, vista, 2000 etc.
    _BENNY
    _BENNY --- ---
    JACHYMKO: no, necekal - clovek by bych rekl naopak cekal ze handler vyjimek jaksi umi handlovat vsechny vyjimky za vsech okolnosti, a zrovna podelanej stack pointer neni udalost, ktera by byla tak vyjimecna, ze by nestala ani za osetreni.

    JACHYMKO: jo, ten clanek uz znam skoro nazpamet :) clovek by opet rekl, ze reseni asi nebudou strukturovane vyjimky, ale vektorove vyjimky. jenze ejhle, ty taky vyzaduji platny stack pointer, ackoliv k tomu nemaji jiny duvod nez lenost MS programatoru.

    zkratka a dobre, pokud ma program poruseny stack, neexistuje sance tuto vyjimku odchytit, coz se mi docela dost nelibi. nechce se mi lezt na uroven driveru, abych to vyresil.
    _BENNY
    _BENNY --- ---
    dotaz - je mozny nejakym zpusobem odchytit vyjimku a pokracovat dal V PRIPADE ze je posranej stack? napr.

    xor esp,esp
    mov [esp],esp ; VYJIMKA

    v debuggeru to odchytim (tedy jde to obechcat pres Debug API, ale to je dost pomaly), ale obsluha SEHu v samotnym programu neprobehne, patrne protoze nema stack na ktery by ulozil parametry volaneho handleru (neprobehnou veci typu drwatson a ruzny post-mortem debuggery). neexistuje nejaky zpusob, jak mu protlacit vlastni stack? Linux to umi, ale na Windows to vypada jako neresitelny problem. a pritom takova blbost.
    KOSTEJ
    KOSTEJ --- ---
    Nemel byste nekdo strukturu ($PIR) tabulky

    HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\MultifunctionAdapter\0\RealModeIrqRoutingTable\0\\Configuration Data

    popr. nejaky slusny text o tom, jak xp provadi PCI steering?
    KOSTEJ
    KOSTEJ --- ---
    API – nektere veci vcelku srozumitelne (a cesky). (html)
    RAGNAROK
    RAGNAROK --- ---
    JACHYMKO:

    No ja vim. Pravdepodobne to byl reg key. Potom se to zobrazovalo rozbalene jak v process exploreru tak i v task manageru.
    RAGNAROK
    RAGNAROK --- ---
    JACHYMKO:

    Dekuji. Ale myslim ze to bylo neco jineho po zadani prikazu se svchost rozbalil v process exploreru nebo ve spravci uloh. Takhle dostanu jen vypis.
    _BENNY
    _BENNY --- ---
    JACHYMKO: vida, dik!
    PEPUS
    PEPUS --- ---
    RAGNAROK
    RAGNAROK --- ---
    Potreboval bych prikaz v cmd ktery rozbali svchost.exe instance na jednotlive procesy. Nekde jsem to videl na webu a uz to nemuzu najit.
    _BENNY
    _BENNY --- ---
    _BENNY: stroj Win2003 x64
    _BENNY
    _BENNY --- ---
    _BENNY: 18:16:50 explorer.exe:2188 OPEN C:\WINDOWS\ServicePackFiles\amd64\netbt.sys:Raec25ph4sudbf0hAaq5ehw3Nf:$DATA NOT FOUND Options: Open Access: All
    _BENNY
    _BENNY --- ---
    JACHYMKO: nikomu nic necpu ;-)

    jo, proste klasickej search na obsah
    _BENNY
    _BENNY --- ---
    JACHYMKO: mne zas prijdou odporny ty "vzdusny" kerneli zdrojaky ;)
    _BENNY
    _BENNY --- ---
    JACHYMKO: presne tak. explorer jen prohledava na obsah "x" v kazdym souboru a takhle se na kazdy soubor v obou variantach "dotazuje". neco pred nami skryvaji :)
    _BENNY
    _BENNY --- ---
    JACHYMKO: zaklad je de facto stejny jako minifilter samples "scanner" v IFSKitu. moje rutina na prevod jmena (ktera se vola v pre/post handlerech) je zde:

    NTSTATUS ScannerGetDOSFileName(PUNICODE_STRING pUS, PCFLT_RELATED_OBJECTS pFltObjects, PFLT_FILE_NAME_INFORMATION pNameInfo) {
    
    	NTSTATUS		status;
    	UNICODE_STRING	us = {0,0,0};
    
    	PAGED_CODE();
    
    	if (!pFltObjects->FileObject->FileName.Length)
    		return STATUS_BUFFER_TOO_SMALL;
    
    	RtlInitUnicodeString(&us,NULL);
    
    	if (!NT_SUCCESS(status = IoVolumeDeviceToDosName(pFltObjects->FileObject->DeviceObject,&us)))
    		return status;
    	if (!NT_SUCCESS(status = RtlAppendUnicodeStringToString(pUS,&us))) {
    		RtlFreeUnicodeString(&us);
    		return status;
    	}
    	RtlFreeUnicodeString(&us);
    	if (pFltObjects->FileObject->RelatedFileObject) {
    		if (!NT_SUCCESS(status = RtlAppendUnicodeStringToString(pUS,&pFltObjects->FileObject->RelatedFileObject->FileName)))
    			return status;
    		if (!NT_SUCCESS(status = RtlAppendUnicodeToString(pUS,L"\\")))
    			return status;
    		if (!NT_SUCCESS(status = RtlAppendUnicodeStringToString(pUS,&pNameInfo->FinalComponent)))
    			return status;
    	} else {
    		if (!NT_SUCCESS(status = RtlAppendUnicodeStringToString(pUS,&pFltObjects->FileObject->FileName)))
    			return status;
    	}
    	DbgPrint("string %S\n",pUS->Buffer);
    	return status;
    }
    
    _BENNY
    _BENNY --- ---
    JACHYMKO:

    Plylst1.wpl:Raec25ph4sudbf0hAaq5ehw3Nf:$DATA
    Plylst1.wpl:{4c8cc155-6c1e-11d1-8e41-00c04fb9386d}

    nemuze to byt jakousi nahodou dvoji interpretace tehoz?
    _BENNY
    _BENNY --- ---
    hlavne ten GUID mi tam bije do oci...
    Kliknutím sem můžete změnit nastavení reklam