[ goblin @ 26.11.2003. 09:21 ] @
Zanima me da li postoji nacin da "uhvatim" gasenje PROCESA (ne aplikacie) od strane Task managera. Pousao sam da uhvatim sve moguce poruke (WM_CLOSE, WM_QUIT), ali kada se proces gasi od strane managera, nema nikakve komunikacije na nivou poruka. Da li postoji neki drugi nacin?
Ako ne, jel postoji bease nacin da se sakrije od XP task managera proces?

Unapred Hvala, Milan
[ morlic @ 26.11.2003. 20:43 ] @
Ne mozes da sakrijes proces od TaskMan-a u XP i W2k sistemima. Pitanje je sta u stvari zelis. Ako zelis da obican korisnik ne moze da ugasi tvoj program onda mozes da razmisljas o tome da ti se program izvrsava kao servis, a da korisnik bude prijavljen kao obican user (ne administrator) na toj masini. Onda on nece moci da gasi tvoj program. U D7 imas podrsku za servise tako da to nije neki problem. Ako se odlucis da pravis servise i imas problema mozes da postavis pitanje na forumu.

U svakom slucaju ne bi trebalo da koristis hvatanje poruka za gasenje jer time rusis normalan sistem komunikacije i ponasanja aplikacije. Izmedju ostalog to je razlog zasto servisi postoje (pa dobro, mozda je to jedan od manje vaznih razloga).
[ goblin @ 03.12.2003. 09:33 ] @
Ja sam i pre posta pretpostavio da mogu da napisem takvu aplikaciju preko servisa (iako nikada i nisam mogao da napravim nijedan jer sam jos uvek na D6) ali sam za svaki slucaj postovao pitanje (za slucaj da, eventualno, postoji neki nacin... :).
Hvatam poruku jer je to u stvari jedan maleni cist WinAPI program tako da hvatanje poruka predstavlja podrazumevano ponasanje (jednostavno, nisam hteo da neki VCLom optereceni program bude rezidentan).
Inace, nisam pravio trojanac :) vec monitor aktivnosti sitema. Iako moze da se ugasi u task manageru, ima logiku po kojoj "vidi" da, kao aplikacija, nije pravilno ugasen (tj. korisnik nije sacekao da se ugasi sistem, vec je na svoju ruku ugasio program) pa je problem (indirektno) resen. Ostaje zal sto korisnik ipak moze da ga ugasi kad god hoce. Smrc :(

Pozdrav
[ reiser @ 03.12.2003. 20:25 ] @
A sta ce se desiti kad korisnik restartuje racunar na dugme ? To program isto detektuje kao 'nasilno' gasenje ? Inace, i mene zanima kako da zastitim program od gasenja u TM-u. Moze li to da se uradi preko Delphi 6, ili mora da se ima 7-ica ?
[ morlic @ 03.12.2003. 23:10 ] @
Imao sam takav problem prilikom pisanja sistema za igraonicu. Ja se uvek potrudim da musteriji objasnim da racunar i softver na njemu ne mogu resiti probleme, da je potrebno da i ljudi imaju odredjenu disciplinu. Ako neki klinac u igraonici zeli na silu da ugasi racunar server ce to primetiti i obavestiti operatera na serveru. Ovaj dalje treba da resava stvar.

Nadzor nad jednim racunarom sam takodje radio (za uplatna mesta kladionice) i stvar je takodje resavana preko servisa (vrlo uspesno) kada je u pitanju WinNT platforma.

Sto se tice zastite od task manager-a, stoji ono sto sam ranije napisao: uraditi program kao servis.

Ako neko ima bolju ideju, svakako vredi probati...
[ goblin @ 05.12.2003. 19:52 ] @
Gasenje racunara koliko znam je tesko zaustaviti na softverskom nivou :) ali se u (kriptovanom) logu mog programa zabelezio start sistema (a po sto nije gasenje... mora da se nesto desilo usput :), tako da administrator u svakom slucaju moze da "disciplinski" ukori korisnika zbog bezobrazluka (ovo je doduse bio program za jedan PC posto sam ga sklepao za dva dana pa pojam "administratora" treba shvatiti uslovno).
U svakom slucaju, hvala na pomoci. Sad znam sta mi je ciniti...

P.S. Samo me jedna stvar kopka... @morlic: klijent masina salje signal serveru svakih 4-5 sekundi pa kada se prekine dotok server vidi da je klijent resetovan ili si nekako drugacije ovo odradio? U kratkim crtama, molim te bas me zanima.

Pozdrav...
[ morlic @ 06.12.2003. 08:35 ] @
Komunikacija je organizovana tako da sto manje zazima resurse mreze. Server i klijent komuniciraju preko UDP protokola, tako da postoji i mehanizam za prakticno asinhronu komunikaciju. Svaka poruka (log,unlog,provera vremena korisnika,...) sa klijenta resetuje timeout brojac na serveru za tog klijenta. Ako istekne zadati period server salje poruku kojom proverava da li je klijent "ziv". Ukoliko nije obavestava operatera i loguje dogadjaj. Postoji poseban timeout koji odredjuje posle koliko vremena neprisustva klijenta se taj dogadjaj upisuje u log. Na ovaj nacin se manje opterecuje i server. Sa 20 klijenata i minimizovanim serverom procesor je na 0% do 4% opterecenja, dok sa podignutim prozorom to iznosi izmedju 0% i 6%. Kod igraonice ova timeout vremena mogu biti i 3-4 minuta jer toliko treba bilo kojoj masini da se resetuje i podigne windows. Ukoliko je pauza veca to je sumnjiva situacija. Klijent aplikacija treba da uhvati poruku za gasenje windows-a i da sto brze zavrsi sa radom (odloguje korisnika).

U obicnim aplikacijama, imam log sistem i mehanizam preko koga se moze lako utvrditi da sistem prethodni put nije ugasen pravilno pa se preuzimaju odredjeni koraci.
[ morlic @ 07.12.2003. 12:23 ] @
Zaboravih da kazem, test procesor je bio na Duron na 600Mhz
[ byTer @ 07.12.2003. 12:59 ] @
Ako mislis da gasis kompluter preko mreze, verovatno je to jedino moguce preko RPC porta (135) A mislim da je to vrlo zeznuto za uraditi... Bar ono sto sam video u Delphi Win32 SDK. Ali uz malo muke verovatno bi mogao da odradis to. Ima dosta metoda preko WinAPIja koji to mogu da urade.
[ reiser @ 17.12.2003. 20:45 ] @
Mislim da proces moze da se sakrije. Imas prikacen kod. Doduse, kod mene ga nisam probao.
( takodje i skini madCodeHook unit sa http://madshi.bei.t-online.de/madCollection.exe )
[ goblin @ 24.12.2003. 09:32 ] @
Smrc. Probao sam, ali ne radi. Dll HideXP.dll lepo napravi, ali kada ga loadujem u svoj program, madCodeHook prijavljuje da je autor blokirao hookovanje na funkcije koje bi mogao da koristi neki trojanac ili virus. Ako imas neki stariji madCodeHoo koji nije imao ovu zabranu (ili znas gde ga mogu nabaviti) bio bih zahvalan. Ako ne, nista, hvala u svako slucaju.
P.S. u attachm. je slika dijaloga koji se pojavljuje kada se pokusa pokretanje dlla.

Pozdrav...
[ reiser @ 25.12.2003. 18:56 ] @
Pa ako nista drugo, posalji mejl njima i zamoli ih da ti daju dll.
[ morlic @ 09.01.2004. 21:56 ] @
Pa u svakom slucaju treba praviti "uctive" programe, tj. programe koji postuju pravila lepog ponasanja. Ko zeli da zastiti program od korisnika treba da program napravi kao servis i da korisniku da obicna prava tako da ovaj ne moze da ugasi servis. Ovo treba kombinovati i sa disciplinom koriscenja racunara i softvera. Ne mislim da delim pamet, ali nastao bi haos kada bi svi pravili programe koji se ponasaju kao virusi. Ne bi dugo proslo dok program ne bi bio otkriven od strane zlonamernika, na ovaj ili onaj nacin, samo sto programer moze mnogo vremena provesti praveci uzaludno "resenje". Ko zeli da pravi nesto stvarno dobro sto se tice zastite treba da preuzme npr. linux source i da ga prepravi po svojim potrebama. Ima li zainteresovanih? Nema? Bas cudno... :)
[ goblin @ 16.01.2004. 20:10 ] @
Ok je, i ocekivao sam komentare ovog tipa; sto se tice etickog dela, u pravu si Orlicu. Hteo sam da mi se onako ponasa program iz opravdanih razloga - nemam D7, dakle servise nisam mogao da pravim (valjda bi mi pali na pamet). Sa druge strane, sto se tice oponasanja virusa, to me zaista ne zanima, ali posto je covek vec pomenuo da ima sanse da se sakrije program pojavilo se ono "uh sto bi ovo bilo lepo da se zna" - ko zna dal ce da zatreba :).
Ipak, mislim da komentar za prepravljanje linux source-a nije na mestu. Nisam pristalica extremnog programiranja, mada sam vise puta namerno radio stvari iako sam znao da postoje gotova resenja za njih (mislim... nisam bas toliki egoista da sad krenem da nabrajam). Postoje stvari koje zaista prelaze granicu dobrog ukusa. "Pure" strukturne programere ("kucače koda") nikada nisam cenio - oni danas postaju sve cesci i cesci (ima ih na tone). Dok ne zavrsim ETF (na drugoj sam) imam dovoljno vremena da se specijalizujem za odredjenu oblast, ali za sada ostajem jedan od onih koji naprave program samo za odredjenu namenu - a cilj mi je da kada to radim zavrsim sto pre (faks je faks). Zbog toga stoji R u RAD. Zato volim Delphi. I to je to.
Izvinjavam se zbog predugackog posta
P.S. Inace, program za monitoring odradjuje svoj posao (sad znam sta mi cimeri rade na laptopu do 3 ujutru :)