Windows 7-chauffør hooking

Indlæg af Hanne Mølgaard Plasc

Problem



Mit spørgsmål handler om driverudvikling til Windows 7.


Jeg skal aflytte systemopkald til en chauffør. Teoretisk set anbefales det i sådanne tilfælde at oprette en filterdriver, men i mit tilfælde viser driveren ikke en filterkompatibel grænseflade. Det er en Vista/7 display miniport driver for at være præcis.


Skærmdriveren er indlæst som en standard WDM-driver. I sin DriverEntry forventes det at kalde en DxgkInitialize systemrutine (eksporteret af win32k.sys jeg tror). Mit mål er at opfange dette opkald.


Kan nogen foreslå mig nogen nyttig kilde Jeg kan finde oplysninger om, hvordan man opnår dette?


Nøglen til sejren erstatter sandsynligvis DxgkInitialize i driverens eksekverbare import sektion med adressen til min funktion. Problemet er, at dette skal gøres efter den eksekverbare er indlæst (kortlagt + flyttet om nødvendigt + alle importtabellposter er udarbejdet), men før driverens indtastning punkt påberåbes.


Jeg tænkte på følgende muligheder:



  • Kort den eksekverbare i systemhukommelsen og 'forberede' den manuelt (dvs. laver læseren). Derefter patch den nødvendige funktion (er) og kør adgangspunktet.

  • Med en vis indsats ZwSetSystemInformation kan bruges til modulindlæsning (?)

  • Måske patch eksport -delen af ​​modulet, der eksporterer DxgkInitialize. Så at læsseren automatisk omdirigerer hvert indlæst modul i mine hænder.



Tak på forhånd.

Bedste reference


Du giver ikke en forretningsårsag til dette, så jeg tøver med at sige noget hårdt. Men du bør genoverveje din teknologiske tilgang, hvis det indebærer hooking opkald.


De trin, jeg ville tage, ville sandsynligvis omfatte:



  1. Hvem eksporterer DxgkInitialize? Må ikke win32k, se det op. (Jeg vil ikke give dig svaret). Måske kan du nemt hakke callee og ikke den, der ringer op.

  2. Har jeg nogen tilbagekaldelse af, hvornår et førermodul er indlæst, men før det er hentet? Lookup PsSetLoadImageNotifyRoutine. Måske vil det give dig en passende timelot til at patchere driverne IAT (hvis du ikke ved hvad en Import-adresse tabel er, genoverveje hooking).



Jeg ser fra kommentarerne, at du primært er interesseret i at 'spionere på visningsaktiviteter'. Jeg er ikke sikker på, at det er nøjagtigt tilladt på computere, du ikke har fuld kontrol over. Men lad os antage for spørgsmålet, at dette er lovligt.


Afhængigt af den opløsning, du vil have, behøver du ikke en driver. Heck, du har næppe brug for en DLL. Slå op Vinduets kroge til delvise løsninger og tilgængelighed tilbagekald. [8]