Poslao: 08 Okt 2006 01:56
|
offline
- bobby

- Administrator
- Pridružio: 04 Sep 2003
- Poruke: 24135
- Gde živiš: Wien
|
Ubijam se vec dva dana, i nikako da mi uspe...
Pravim DLL koji ce biti ucitavan u raznim aplikacijama (bolje receno injektovan preko CreateRemoteThread).
Osim toga, potrebno mi je da napravim i monitor-aplikaciju, kojoj ce DLL da se periodicno javlja.
Ubih se oko IPC-a i sendmessage, ali nikako da uspostavim komunikaciju.
Sve sto moze da se nadje na netu podrazumeva neke komponente, ali u DLL-u ne mogu da koristim nista od VCL-a, tako da moram da resavam slucaj na tezi nacin.
Jel radio iko ovako nesto i moze li iko da mi objasni kako ovo treba uraditi?
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 08 Okt 2006 03:16
|
offline
- Srki_82

- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
SendMessage bi trebalo lepo da radi. Uz pomoc FindWindow funckije ili na neki drugi nacin pronadjes handle prozora monitor-aplikacije. Kad ga budes imao jednostavno posaljes neku custom poruku (WM_USER + neki broj) i u parametrima mozes poslati bilo sta (oba parametra su velicine 4 bajta pa bez problema mozes da posaljes pointer na bilo koji tip podatka u bilo kojem parametru).
Sad je malo kasno pa sam mozda pogresno razmisljao, ali mi se cini kao da ovo moze lepo da radi.
Podatke mozes da prenosis i na druge nacine... recimo, koristeci globalne atome, mapped files...
Kad bi malo bolje opisao koliko cesto i kakve informacije treba da se prenose, mozda bi smislili nesto bolje od SendMessage.
|
|
|
|
Poslao: 04 Nov 2006 10:13
|
offline
- Tatic
- Novi MyCity građanin
- Pridružio: 04 Nov 2006
- Poruke: 1
|
Nekontam. Ako zelis da usostavis komunikciju izmedju dve aplikacije to ti je najlakse uraditi sa sa WM_COPYDATA. primjere mozes naci na torry.net i delphi.about.com. sa ovim mozes slati stringove, liste, slike, tonove, sve
|
|
|
|
Poslao: 04 Nov 2006 12:38
|
offline
- bobby

- Administrator
- Pridružio: 04 Sep 2003
- Poruke: 24135
- Gde živiš: Wien
|
@Tatic
Nisu klasicne aplikacije u pitanju, rec je o hookovima.
Pravim system-wide hook koji treba monitoring aplikaciji da salje podatke o raznim desavanjima.
Gde god sam do sada gledao, ovakve stvari su uvek resavane preko IPC-a, pa pretpostavljam da postoji valjan razlog za to.
Uskoro se ponovo vracam resavanju ovog problema, pa cu da javim kako napreduje.
|
|
|
|
Poslao: 04 Nov 2006 17:00
|
offline
- beli0135

- Executor
- Pridružio: 03 Jan 2005
- Poruke: 2990
- Gde živiš: Beograd
|
Pogresno si postavio problem. Ne moze nesto da se javlja monitoring aplikaciji, nego monitoring aplikacija treba da posalje zahtev.
Svaki tvoj dll koji nesto radi, mora da se registruje unutar monitoring aplikacije na neki nacin (obicno jedan TList ili tvoj naslednik iste). Posto znas koja je monitoring aplikacija, i uvek je jedna, nije problem da znas i handle do iste.
Nadam se da ti ovo daje malo svetla u kom pravcu ici.
|
|
|
|
Poslao: 04 Nov 2006 19:09
|
offline
- bobby

- Administrator
- Pridružio: 04 Sep 2003
- Poruke: 24135
- Gde živiš: Wien
|
Skontao sam gde je problem, i ispalo je da je greska totalno leva - WinAPI je case-sensitive, i ja to nisam znao...
@beli0135
Svi primeri koje sam video rade na nacin na koji sam i ja hteo.
IPC ima stack organizaciju, pa poruke koje salju dll-ovi ne mogu biti ispustene. Ako bih radio prozivku kako ti predlazes, morao bih da se ja u dll-ovima pobrinem da poruke sacekaju prozivku.
Aplikacije hookuje par funkcija kernel API-ja, na principu na kojem antivirus programi prate desavanja na sistemu, s tim sto ja hocu da presretnem svega 3 APi funkcije, dok recimo KAV presrece nekih desetak.
|
|
|
|
Poslao: 04 Nov 2006 19:34
|
offline
- beli0135

- Executor
- Pridružio: 03 Jan 2005
- Poruke: 2990
- Gde živiš: Beograd
|
Aha, kapiram. Pa da, bas tako kao sto si ti rekao. U pocetku sam pogresno shvatio sta hoces.
|
|
|
|