Kā Iegūt Deskriptoru

Satura rādītājs:

Kā Iegūt Deskriptoru
Kā Iegūt Deskriptoru

Video: Kā Iegūt Deskriptoru

Video: Kā Iegūt Deskriptoru
Video: ЗАПРЕЩЕННАЯ ТАЛИЯ И АБС за 10 дней | 5-минутная домашняя тренировка 2024, Maijs
Anonim

Windows operētājsistēmu lietojumprogrammu saskarni attēlo funkciju kopums. Kad tos izsauc, var izveidot dažādus objektus (failus, procesus, pavedienus, sinhronizācijas objektus utt.). Lai nodrošinātu pietiekami abstraktu un vienotu piekļuvi šiem objektiem, to identifikācija tiek veikta, izmantojot deskriptorus - "bezpersoniskas" skaitliskās vērtības.

Kā iegūt deskriptoru
Kā iegūt deskriptoru

Nepieciešams

  • - tulks no programmēšanas valodas, kas ļauj izmantot Windows API;
  • - iespējams, Windows platformas SDK.

Instrukcijas

1. solis

Iegūstiet logu rokturus. To var izdarīt daudzos veidos. Precīza metode ir atkarīga no gala mērķa.

Lai izveidotu logu, izmantojiet API CreateWindow vai CreateWindowEx. Viņi atgriež rokturi par panākumiem un NULL par neveiksmi.

Meklējiet augšējā līmeņa logus un pakārtotos logus pēc dažādiem parametriem, izmantojot attiecīgi funkcijas FindWindow un FindWindowEx. Veiksmīgas meklēšanas gadījumā tiks iegūts loga rokturis.

Uzskaitiet logus, izmantojot funkcijas EnumWindows, EnumChildWindows, EnumThreadWindows. Atrasto logu rokturi tiks nodoti kā parametrs atzvanīšanas funkcijai.

Atrodiet loga rokturi, kas atrodas noteiktā ekrāna vietā. Izsauciet vienu no funkcijām: WindowFromPoint, ChildWindowFromPoint vai ChildWindowFromPointEx.

2. solis

Iegūstiet procesa rokturus. Izveidojiet jaunu procesu, izsaucot API funkcijas CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW vai CreateProcessWithLogonW. Viņi visi atgriež rokturi jaunajam procesam struktūras PROCESS_INFORMATION laukā hProcess, kuram rādītājs viņiem jānodod kā pēdējais parametrs.

Atrodiet procesa rokturi pēc tā zināmā identifikatora. Izmantojiet OpenProcess zvanu. Visu darbojošos procesu ID var iegūt, piemēram, izmantojot rīka palīdzības bibliotēkas funkcijas CreateToolhelp32Snapshot, Process32First un Process32Next.

Iegūstiet pašreizējā procesa pseido rokturi, izmantojot funkciju GetCurrentProcess.

3. solis

Iegūstiet pavedienu aprakstus. Funkcijas CreateThread un CreateRemoteThread izveido pavedienus attiecīgi savā un kāda cita procesā, atgriežot savus rokturus. Varat atvērt esošu pavedienu, izmantojot tā identifikatoru, un iegūt atbilstošo rokturi, izmantojot funkciju OpenThread. Pašreizējās plūsmas pseido-rokturis tiek atgriezts, kad tiek izsaukts GetCurrentThread.

4. solis

Failu, direktoriju, fizisko disku, disku sējumu, konsolu, sakaru resursu (I / O porti), pasta slotu un nosaukto cauruļu aprakstus var iegūt, izsaucot vienu funkciju CreateFile.

5. solis

Faila-atmiņas kartēšanas objektu deskriptori tiek atgriezti, izsaucot uz CreateFileMapping un OpenFileMapping.

6. solis

Funkcijas CreateMutex, CreateSemaphore un CreateEvent izveido, un OpenMutex, OpenSemaphore un OpenEvent funkcijas atver esošos sinhronizācijas objektus (muteksus, semaforus un notikumus). Viņi visi atdod aprakstus.

7. solis

Visi GDI objekti (piemēram, ierīču konteksti, fonti, otas, zīmuļi, no aparatūras atkarīgi un neatkarīgi bitkartes, DIB sadaļas utt.) Tiek apstrādāti, izmantojot to aprakstus. Funkcijas GDI objektu izveidei ir daudz, un informāciju par tām skatiet sadaļā MSDN.

8. solis

Vienā procesā iegūto deskriptoru parasti nevar izmantot citā. Tomēr dažos gadījumos ir iespējams iegūt deskriptora dublikātu, kas atbilst primārajam objektam. Zvaniet uz DuplicateHandle API, lai dublētu rokturi. To var izmantot, piemēram, lai koplietotu nenosauktus sinhronizācijas objektus vai kanālus starp vairākiem procesiem.

Ieteicams: