Kako Dobiti Deskriptor

Kazalo:

Kako Dobiti Deskriptor
Kako Dobiti Deskriptor

Video: Kako Dobiti Deskriptor

Video: Kako Dobiti Deskriptor
Video: KAKO DOBITI LEGENDARY BRAWLERA? | Brawl Stars 2024, Maj
Anonim

Programski vmesnik za operacijski sistem Windows je predstavljen z naborom funkcij. Ko jih pokličete, lahko ustvarite različne predmete (datoteke, procesi, niti, predmeti za sinhronizacijo itd.). Za zagotovitev dovolj abstraktnega in enotnega dostopa do teh predmetov se njihova identifikacija izvede z uporabo deskriptorjev - "neosebnih" numeričnih vrednosti.

Kako dobiti deskriptor
Kako dobiti deskriptor

Potrebno

  • - prevajalec iz programskega jezika, ki omogoča uporabo Windows API;
  • - morda Windows Platform SDK.

Navodila

Korak 1

Pridobite okenske kljuke. Za to obstaja veliko načinov. Natančna metoda je odvisna od končnega cilja.

Za ustvarjanje okna uporabite API-je CreateWindow ali CreateWindowEx. Vrnejo odgovor na uspeh in NULL na neuspeh.

Poiščite okna najvišje ravni in podrejena okna po različnih parametrih s pomočjo funkcij FindWindow in FindWindowEx. Ob uspešnem iskanju bo pridobljen ročaj okna.

Oštevajte okna s funkcijami EnumWindows, EnumChildWindows, EnumThreadWindows. Ročaji najdenih oken bodo posredovani kot parameter funkciji povratnega klica.

Poiščite ročico do okna, ki se nahaja na določenem mestu na zaslonu. Pokličite eno od funkcij: WindowFromPoint, ChildWindowFromPoint ali ChildWindowFromPointEx.

2. korak

Pridobite procesne ročaje. Ustvarite nov postopek s klicanjem funkcij API CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW ali CreateProcessWithLogonW. Vsi vrnejo ročaj novemu procesu v polju hProcess strukture PROCESS_INFORMATION, katerega kazalnik naj jim se posreduje kot zadnji parameter.

Poiščite ročico postopka po njegovem znanem identifikatorju. Uporabite klic OpenProcess. ID-je vseh zagnanih procesov je mogoče dobiti na primer z uporabo funkcij CreateToolhelp32Snapshot, Process32First in Process32Next v knjižnici za pomoč orodja.

Pridobite psevdo ročaj trenutnega procesa s pomočjo funkcije GetCurrentProcess.

3. korak

Pridobite deskriptorje niti. Funkciji CreateThread in CreateRemoteThread ustvarjata niti v svojem in v procesu nekoga drugega, vračata svoje ročaje. Obstoječo nit lahko odprete z njenim identifikatorjem in dobite ustrezen ročaj s funkcijo OpenThread. Ko se pokliče GetCurrentThread, se vrne psevdo-ročaj trenutnega toka.

4. korak

Deskriptorje datotek, imenikov, fizičnih diskov, nosilcev diskov, konzol, komunikacijskih virov (vhodno / izhodna vrata), poštnih rež in imenovanih kanalov lahko dobite s klicem ene same funkcije CreateFile.

5. korak

Deskriptorji map preslikave datotek v pomnilnik se vrnejo s klici na CreateFileMapping in OpenFileMapping.

6. korak

Ustvarijo funkcije CreateMutex, CreateSemaphore in CreateEvent, funkcije OpenMutex, OpenSemaphore in OpenEvent pa obstoječe sinhronizacijske objekte (mutekse, semaforje in dogodke). Vsi vrnejo deskriptorje.

7. korak

Z vsemi predmeti GDI (kot so konteksti naprav, pisave, ščetke, svinčniki, odvisne od strojne opreme in neodvisne bitne slike, odseki DIB itd.) Se manipulira prek njihovih deskriptorjev. Funkcije za ustvarjanje predmetov GDI so številne, zato se je treba o njih pozanimati v razdelku MSDN.

8. korak

Deskriptorja, pridobljenega v enem postopku, praviloma ni mogoče uporabiti v drugem. Vendar je v nekaterih primerih mogoče dobiti podvojen deskriptor, ki ustreza primarnemu objektu. Pokličite API DuplicateHandle, da podvojite ročico. S tem lahko na primer delite neimenovane sinhronizacijske predmete ali kanale med več procesi.

Priporočena: