Samozagonska upraviteljska aplikacija pomoč

Win32 api funkcije.
Odgovori
cucolino
Prispevkov: 3
Pridružen: 12.10.2011 19:54:20

Samozagonska upraviteljska aplikacija pomoč

Odgovor Napisal/-a cucolino » 12.10.2011 21:21:54

Pozdravljeni
Na forumu ter tudi nasploh v Delphiju sem še precej zelen, zato najprej prosim za potrpljenje... :)
No, torej... prosil bi za rahlo pomoč. :)
Sam princip aplikacije, ki bi jo rad izdelal je tak: Brez GUI; Brez obvestil CMD-ja ipd; Brez kakršnihkoli potreb po pritisku tipk ipd; Delovanje v ozadju brez ikone kjerkoli (niti systray). Opcijsko bi prav prislo tudi, ce bi jo lahko skril s seznama procesov* (ne, ne gre za virus ali kaj podobnega; to opcijo bi potreboval oz. bi bila zazeljena le v primeru #2 (spodaj)).

V program vstavljam kodo "ukradeno" iz dWinlock source-a, ki je na voljo na internetu, uporablja pa njihove dll-je. Ven jemljem kodo za DisableAllKeys. (Potrebujem nekaj, kar mi popolnoma onesposobi tipkovnico in misko. Z blockinput sem probal, vendar ne blokira ctrl+alt+del, morda bi se moral spustiti do osnovnega keyboard bufferja, vendar ne vem o tem prakticno nic... :S )
Trenutno imam sicer tudi tukaj se rahle probleme z onesposobitvijo Ctrl+Alt+Del, vendar moram to testirati na 32 bitnem sistemu, saj dWinlock za dolocene funkcije podpira zgolj 32 bitne sisteme. Vem da za onesposobit to kombinacijo nalozi nek keyboard filter driver (iz .sys datoteke), nevem pa kaj tocno...
V glavnem, omenjena koda je v njihovem samplu speljana na tButton OnClick event, (za odklep in zaklep), jaz pa bi zdaj to rad tako napeljal, da se sam Lock ukaz izvede takoj ob zagonu exe-ja. Iskal sem po Googlu, vendar ocitno z napacnimi kljucnimi besedami. Za odklep nisem se siguren, ali je mozno odklenit samo s crashanjem procesa (to bi storil z batchom), upam da je, sicer me potem caka se to delo...

Upam, da mi kdo lahko pomaga. :) Hvala.

Ps: #2; opcijsko sem mislil, ce je mogoce morda tudi to, da bi odklepal/zaklepal z ukazi Lock.exe /lock in Lock.exe /unlock (predpostavka da je Lock.exe program). Nevem sicer, kako sploh delujejo ti subukazi s posevnicami, vendar bi potemtakem lahko proces skozi tekel, (pri cemer bi bilo dobro, ce bi bil skrit, zato sem tisto zgoraj napisal) oz. bi morda lahko potem proces po ukazu sebe zaprl (CE se ob izhodu vse skupaj ne nazaj odklene - v tem primeru grem uporabit crash varjanto, trenutno se mi zdi najbolj enostavna... )


Hvala. Lp Marko

cucolino
Prispevkov: 3
Pridružen: 12.10.2011 19:54:20

Re: Samozagonska upraviteljska aplikacija pomoč

Odgovor Napisal/-a cucolino » 12.10.2011 21:42:26

Ok, pravkar mi je ratalo najt ven OnCreate na TForm1, tako da sem to resil. :)

Za ostalo se se vedno priporocam za nasvete... hvala :)

Silver_War
Prispevkov: 664
Pridružen: 01.06.2004 14:50:41

Re: Samozagonska upraviteljska aplikacija pomoč

Odgovor Napisal/-a Silver_War » 15.10.2011 00:21:15

cucolino napisal/-a: Z blockinput sem probal, vendar ne blokira ctrl+alt+del, morda bi se moral spustiti do osnovnega keyboard bufferja, vendar ne vem o tem prakticno nic... :S )
Trenutno imam sicer tudi tukaj se rahle probleme z onesposobitvijo Ctrl+Alt+Del, vendar moram to testirati na 32 bitnem sistemu, saj dWinlock za dolocene funkcije podpira zgolj 32 bitne sisteme. Vem da za onesposobit to kombinacijo nalozi nek keyboard filter driver (iz .sys datoteke), nevem pa kaj tocno...
Ja edina možnost za onesposobitev kombinacije CTRL+ALT+DEL je vplivanje na sam gonilnik za tipkovnico. Nevem sicer kako to naredi dWinlock vendar lahko igranje z gonilniki od tipkovnice privede do tega, da računalnika več nebo moč uporabiti (tudi po ponovnem zagonu). To sem se naučil iz lastnih izkušenj, ko sem poizkušal s porgramom WinDriver narediti svoj gonilnik za tipkovnico. Hvala bogu, da sem predhodno ustvaril obnovitveno točko.
cucolino napisal/-a:Za odklep nisem se siguren, ali je mozno odklenit samo s crashanjem procesa (to bi storil z batchom), upam da je, sicer me potem caka se to delo...
Močno dvomim, da se odklep izvede z crashanjem procesa. Verjetno mora sam proces poklicati potrebno funkcijo, da se izvede odklep. Ravno tu lahko pride do problema, ki sem ga prej omenjal. Namreč če se izvede zaklep tipkovnice na način, da se onemogoči gonilnik, in pride do izpada električnega toka, je možno, da bo ta gonilnik še vedno onemogočen tudi po ponovnem zagonu računalnika.
cucolino napisal/-a:Ps: #2; opcijsko sem mislil, ce je mogoce morda tudi to, da bi odklepal/zaklepal z ukazi Lock.exe /lock in Lock.exe /unlock (predpostavka da je Lock.exe program). Nevem sicer, kako sploh delujejo ti subukazi s posevnicami, vendar bi potemtakem lahko proces skozi tekel, (pri cemer bi bilo dobro, ce bi bil skrit, zato sem tisto zgoraj napisal) oz. bi morda lahko potem proces po ukazu sebe zaprl (CE se ob izhodu vse skupaj ne nazaj odklene - v tem primeru grem uporabit crash varjanto, trenutno se mi zdi najbolj enostavna... )
Če bi hotel imeti možnost takšnega odklepanja in zaklepanja, bi dejansko potreboval dva programa (kontrolnega in nadzornega).
Lock.exe (kontrolni program) bi se zagnal vsakič, ko hotel izvesti nek ukaz, preveril če nadzorni program (drug program, ki je dejansko stalen proces) že deluje in mu posredoval potreben ukaz. Če bi ugotovil, da nadzorni program ne deluje (prvi zagon), bi le tega zagnal in mu potem posredoval potreben ukaz. Na koncu bi pa se kontrolni program zaprl.

Sedaj pa še nekaj. Ti hočeš naredit program, ki nebo imel vidnega okna, ki nebo prikazan na listi delujočih procesov in ki bo zmožen vplivati na delovanje gonilnikov. Dejstvo je, da ti bo vsak nekoliko boljši protivirusni program, ki omogoča zaznavanje potencialno nevarnih procesov, označil tvoj program kot škodljivo programsko opremo in to ravno zaradi tega, ker ima tvoj program značilnosti trojanca.

Ni mi ravno jasno zakaj hočeš tvoj program skrivat. Ko sta enkrat tipkovnica in miška onesposobljeni, ni nič narobe, če je program viden (vsaj uporabnik ve, da sta bila tipkovnica in miška onesposobljeni in ne začne razbijati po njiju ker misli, da sta crknili). Z prikazom okna bi se verjetno tudi izognil temu, da bi protivirusni programi označevali tvoj program kot škodljivo programsko opremo.
Če pa je tvoja želja, da tvoj nadzorni program vedno deluje in ga uporabnik nemore zapret, bi pa bilo dobro, da le tega narediš kot nekak service, ki se po potrebi avtomatsko ponovno zažene. Seveda pa mora bit ta service ustrezno narejen, da nebo ob vsakem zagonu zaklepal tipkovnico in miško, če to takrat ni potrebno.

cucolino
Prispevkov: 3
Pridružen: 12.10.2011 19:54:20

Re: Samozagonska upraviteljska aplikacija pomoč

Odgovor Napisal/-a cucolino » 19.10.2013 21:21:56

Pozdravljen.
Dooolgo časa kar se nisem oglasil. Moram reči, da mi je blazno žal, da nisem niti pogledal več za postom in odgovori. Stvar sem namreč par dni kasneje rešil in se posvetil nadalnjemu delu, ob čemer sem popolnoma pozabil na ta post. Podobno sem namreč spraševal na tujih forumih in tam je debata stekla precej aktivno...
V glavnem, nočem oživljati teme, bi pa samo rad odgovoril, da smo zadevo lepo rešili, in je delovala/deluje.
Da, ima značilnosti trojanca, ampak take značilnosti sem potreboval.
V glavnem je šlo za uporabo na računalnikih, katerih skrbnik sem bil jaz. Tako da tudi v antivirusih sem (čeprav mi takrat ni zaznalo ničesar) vnesel izjemo, nato pa vse skupaj zafreezal z DeepFreezom.
Torej, tudi gonilnik tipkovnice je bil varen pred možnimi problemi, ki si jih omenil (sicer sem že pred tem potem ugotovil, da crashanje procesa nazaj požene tipkovnico, tako da sem lepo reševal z batchi, + vsa testiranja so potekala na VMWare-u pred dejansko namestitvijo), ker je bil računalnik zamrznjen pred zaklepom. Da, to bi lahko reševali uporabniki tako, da bi računalnik ponovno zagnali, vendar pa je nadzorni program, ki je bil na glavnem računalniku - terminalu, ukaze za zaklep pošiljal na 20 sekund, tako da bi uporaba bila možna zgolj brez mreže. Dostop do omrežnih nastavitev sem zaklenil, ipd... Skratka, stvar je zdaj super.
Nadgradil sem jo tudi na to, da zdaj deluje kot service, in ne več kot proces, ob tem pa uporabljam TCPClient/Server povezavo, tako da je praktično stalno na vezi s terminalom.

Naj pojasnim tudi zakaj se je šlo:
Imeli smo terminal, na katerem smo pognali program, ki je spremljal prijave in odjave uporabnikov; vsak si je ob prijavi (uspešni, torej: kartica veljavna in v bazi kot dovoljena) s pritiskom na gumb "izbral" računalnik, ki mu ga je potem terminal prek mreže odklenil. Po eni uri oz. ob odjavi se računalnik ponovno zaklene, zato je potrebna nova prijava. S tem smo pohitrili in predvsem vsaj v večini zaostrili uporabo in nadzor nad računalniki, za primere poškodb ipd...
Stvar je sicer precej zaščitena, celo preveč za dejstvo, da sistem praktično teče na splošni gimnaziji, in ga uporabljajo zgolj dijaki, ampak... tudi sam sem (takrat bil v 4. letniku) dijak, in če pomislim kako spreten sem bil sam z računalnikom... no ja... ;)
Sistem je pa na črtne kode, saj so tako uporabljali iste kartice kot za Cobiss knjižnični sistem. V planu je bila nadgradnja na RFID čitalec, saj so nove dijaške vse na RFID sistemu, vendar do nadgradnje nikoli ni prišlo.

Kakorkoli, sistem je več kot primeren za podobne primere nadzora računalnikov, bodisi za knjižnice, bodisi šole, podjetja, itd... je nadgrajen, izpopolnjen, dodali smo mu lasten hardware (za tipke, usb input/output board), prej je namreč deloval ta tipke, katere sem pricinil na F1 - F8 tipkovnične povezave ;), predvsem pa hiter in popolnoma prilagodljiv naročniku. Le volje za reklamiranje trenutno ni, ker je cel kup projektov v igri. Da, v teh 2 letih sem se precej naučil o delphiju... vsaj mislim ;)

Hvala, in lp.

Marko

Odgovori