ioctl - Sådan logger du på DeviceIoControl-opkald af et program på Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg skal indfange DeviceIoControl () systemopkald af en applikation. På linux kan strace bruges til at analysere alle ioctl-opkald. Er der nogen lignende funktionalitet på Windows?


MSDN hjemmeside anbefaler et program kaldet 'Process Monitor' til at analysere real-time aktiviteter af eksekverbare filer. 'Process Monitor' viser dog ikke noget om DeviceIoControl-opkald.

Bedste reference


Har du prøvet OSRs IRPTracker? [1]



  IrpTracker giver dig mulighed for at overvåge alle I/O-anmodningspakker (IRP'er) på et system uden brug af nogen filterdrivere og uden referencer til en hvilken som helst enhed objekter, hvilket efterlader PnP systemet helt uforstyrret. Ud over at kunne se stien, tager IRP ned driverstakken og dens ultimative færdiggørelsesstatus, er der en detaljeret visning, der giver dig mulighed for at se hele indholdet af statisk del af IRP og en fortolket visning af nuværende og tidligere stakke steder.


Andre referencer 1


For at fange DeviceIoControl () -funktionen kan du bruge en API-krog. Mit firma leverer Deviare, en krogmotor med et højt niveau interface. Du behøver ikke at vide meget om at tilslutte den, der kan bruges frit (vis blot en dialog med uregistreret version). Den indeholder en krokonsol med kildekode. [2]

Andre referencer 2


Nyligt opdaget Rohitabs API Monitor
Det har ikke været opdateret i 2 år, men det virker på min Win7 x64. Det har meget gode API filtreringsfunktioner. [3]

Andre referencer 3


Dr. Memory (http://drmemory.org) værktøjet leveres med et systemopkaldsopsparingsværktøj kaldet drstrace, der viser alle systemopkald, der er lavet af en målsøgning, herunder NtDeviceIoControlFile, sammen med deres argumenter: http://drmemory.org/strace\_for\_windows.html [4] [5]