Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

vxd (File system hooking win32)

[es] :: Kernel i OS programiranje :: vxd (File system hooking win32)

[ Pregleda: 2761 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Mikky

Član broj: 18
Poruke: 1563
*.rcub.bg.ac.yu

ICQ: 44582291


+58 Profil

icon vxd (File system hooking win32)14.01.2003. u 23:07 - pre 258 meseci
Da li je neko imao iskustva sa pravljenjem aplikacije koja ce da filtrira file system pozive?
Znaci pomocu vxd drajvera mozemo doci u ring0, i time sa vecim privilegijama postaviti hook proceduru kroz koju prolaze svi API pozivi koji imaju veze sa fajlovima. Ovo je potpuno legalan i supported by MS interfejs koji to omogucava, dakle nikakav dirty hacking. Koriste ga npr antivirusi (a bogami i virusi ) zatim razni file protectori koji omogucuju da korisnik sakrije fajlove ili ih ucini nedostupnim, cak ga i MS word koristi (to sam provalio jer mi je softice vrisnuo jednom dok je bio bpx na funkciji koja postavlja hook) samo ne znam u kom svojstvu

anyway ako se neko vec bavio ovime hteo bi da razmenimo iskustva, posto su informacije u vezi ovoga dosta sture , cak i u DDK za win9x
-I know UNIX, PASCAL, C, FORTRAN,
COBOL, and nineteen other high-tech
words.
 
Odgovor na temu

Sundance

Član broj: 7510
Poruke: 2559
*.cc.fer.hr



Profil

icon Re: vxd (File system hooking win32)17.01.2003. u 11:45 - pre 258 meseci
Hookiranje je jako zanimljiva stvarcica koja ti omogucuje da od nezeljnih programa/korisnika skrijes sve ono sto zelis zadrzati za svoj dirty illegal program. Najcesce se hookiraju vxd servisi(ring0) i to uglavnom registry, filesystem te oni vezani za mrezni promet.

Na win98 to je prilicno lako jer je shared memorija dostupna prakticki svim programima (s obzirom na to da pises vxd, pretpostavljam da imas jedino iskustva u WDM), moguce je, te prakticno i korisnije hookirati same API-je. Npr, neki program pozove CreateFileA koji preko trap gate-a pozove odgovarajuci IFS servis (Nt kernel poziva NtCreateFile/ZwCreateFile koristeci int 2eh NCI (Native Call Interface) u ntdll.dll, tako da i tamo dodje na istu stvar), tako da ako hookiras ring3 sucelje u biti ces moci filtrirati i sve ono sto prime ring0 servisi cak i prije nego se parametri iskopiraju na ring0 stack!

E sad, ako stvarno zelis hookirati servise, najbolje bi ti bilo napraviti neki univerzalni hooker i pri tome imati na umu da se drasticno razlikuju (Npr za IFS postoji InstallFileSystemApiHook, ali postoji i servis koji bas sluzi hookiranu drugih servisa, a kojemu ne zanm tocno naziv i koji radi na principu da u service dispatcheru u index tablici zamijeni za odgovarajuci entry adresu tvog servisa-hooka (najbolje bi bilo da ga iskopiras negdje u gornja 2 giga i napravis nedostupnim iz ring3), tako da bi najbolje bilo da i njega hookiras i onemogucis da netko hookira tebe. Nemam trebutno kod sebe disasembliran kod tog servisa za hookiranje (mislim da sam ti ga jednom poslao, ako ne, javi), ali imam ovo:

; ---------------------------------------------------------------------------
; manually hooks a service
; i: ecx = ptr to DDB
; ebx = service to hook
; esi = hooking procedure
;
; o: esi = original service handler
; ---------------------------------------------------------------------------
hook_service:
mov edx, [ecx+30h]
; take ptr to service ptr table
xchg esi, [edx+ebx*4]
; xchg ptr to service and ptr to hooking procedure
retn

To je u biti to sto radi iako ima u sebi provjeru da li je adresa hooka mapirana u fizicku memoriju i onemogucava da se neki servisi hookiraju. Ali zastro sve to kad mozes sve to rucno? :) Znas vec odakle je ovo, a tamo imas i dio koda koji hookira registry kljuceve kojie koristi trojan (one u start-upu tako da je nevidljiv u regeditu). Vidi i makro HOOK_SERVICE koji je prilicno self-explanatory :) Ja sam se s ovim dugo mucio (poanta je bila de onemoguci regmon da filtrira registry access), sve dok nije proradilo. Zato ti savjetujem da sve odradis u C-u u ring3, prije toga slozi neki mali dll u asmu da hookira odgovarajuci API i voila!

I tko kaze da ne spada u sistemsko programiranje? :)
 
Odgovor na temu

tarpi

Član broj: 8173
Poruke: 6
*.ri.ri.cox.net



Profil

icon Re: vxd (File system hooking win32)12.02.2003. u 02:43 - pre 257 meseci
ne znam dali si limitovan 98-com, ako nisi, ja sam nasao odlicnu knjigu, "Undocumented Windows 2000 Secrets - A Programmer's Cookbook" od Schreiber-a. Ima odlicne primerke source koda za pravljenje kernel mode drivera. Potrazi w2kInternals. Trebalo bi da postoje i primeri koda. Ako ne, javi mi i poslacu ti zipovani source.

 
Odgovor na temu

ned
Australia

Član broj: 1263
Poruke: 23
*.wc.optusnet.com.au



Profil

icon Re: vxd (File system hooking win32)19.02.2003. u 12:13 - pre 257 meseci
Pogledaj archives na http://www.ntdev.org/ i http://www.ntfsd.org/ a ako zelish da se ukljucite na te dve liste idite na www.osr.com/listserver_main.htm da se registrujete.
Savetovao bih vas da im ne postavljate pitanja dok ne upoznate se sa stvarima prvo.
Isto tako www.sysinternals.com imaju dosta primera raznih slicnih aplikacija, ukljucujuci C/C++ source, na primer, filemon, regmon, itd.
Pre nedlju-dve naisao sam na "IRP trace" utility ali trenutno se ne mogu setiti gde. (IRP = I/O Request Packet)


----------------------------------------
 
Odgovor na temu

[es] :: Kernel i OS programiranje :: vxd (File system hooking win32)

[ Pregleda: 2761 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.