Pertanyaan Pemantauan panggilan sistem tertentu dilakukan oleh suatu proses di Windows


Saya ingin dapat memantau panggilan sistem tertentu yang dibuat oleh suatu proses, terutama file I / O panggilan. Di Linux saya mungkin bisa lolos menggunakan strace dengan parameter yang sesuai, tetapi bagaimana saya bisa melakukan ini di Windows?

Saya terutama tertarik untuk menjalankan proses dan mencari tahu file mana yang telah dibaca dan ditulisnya.

EDIT: Saya ingin melakukan ini secara terprogram dari proses lain. Saya mengetahui ProcessMonitor, tetapi saya ingin menerima data dalam bentuk yang dapat saya impor ke program lain untuk analisis lebih lanjut.

EDIT: Jika saya mempersempit persyaratan saya lebih jauh, mungkin cukup untuk dapat memantau panggilan ke CreateFile (). Saya benar-benar hanya tertarik pada file apa yang dibuka, dan jika dibuka untuk dibaca / ditulis atau hanya dibaca. Syarat lain yang tidak benar-benar saya nyatakan adalah itu kecepatan cukup penting; Saya berencana melakukan ini untuk hal-hal seperti mengkompilasi file C ++, dan menarik GUI penuh yang menghasilkan 20MB logfile akan memiliki overhead yang mahal.

EDIT: Akan lebih baik jika tidak memerlukan hak administratif.


32
2018-05-14 18:06


asal


Jawaban:


Ada beberapa opsi di Windows.

Windows Performance Toolkit dapat digunakan untuk mengaktifkan pelacakan berbagai acara sistem, termasuk file I / O, dan termasuk alat untuk memproses dan melihat peristiwa-peristiwa ini. Anda dapat menggunakan xperf untuk mulai melacak berbagai kelas kejadian dan menyimpan ke file ETL yang kemudian dapat Anda proses atau lihat menggunakan alat yang sama nantinya.

Monitor Proses dari SysInternals adalah opsi lain yang sangat mudah digunakan, dan memungkinkan Anda untuk melihat dengan cepat semua file dan registry mengakses setiap proses yang dilakukan sistem. http://blogs.msdn.com/carloc/archive/2008/10/31/how-to-automate-process-monitor.aspx juga menunjukkan cara menjalankan Proses Monitor secara otomatis.

Jika Anda ingin melakukan ini sepenuhnya secara terprogram, Anda dapat menggunakan fungsi ETW (StartTrace, EnableTrace, dll.) Untuk mengambil file I / O event dan menyimpannya ke file ETL. Kode sampel sini.


23
2018-05-14 18:09



Di jendela, Anda bisa menggunakannya monitor proses untuk memonitor aktivitas proses (io dan registry). Saya kira ini sesuai dengan kebutuhan Anda jika Anda tidak benar-benar ingin tahu panggilan sistem.

Dan Anda bisa menggunakannya winapioverride32 untuk memonitor panggilan api.


5
2018-05-14 18:14



Monitor API oleh rohitab sangat bagus untuk panggilan sistem

http://www.rohitab.com/apimonitor


4
2017-07-03 15:01



Mungkin FileMon?

Ada juga NtTrace, mirip dengan strace.


2
2018-05-14 18:16



Alat pelacakan API Windows lainnya: logexts.dll (bagian dari Alat Debugging untuk Windows), yang dapat dijalankan dari dalam WinDbg / ntsd / cdb atau melalui standalone logger.exe program.


2
2018-05-14 18:21



Cara lain adalah menggunakan Deviare API Hook sebuah intersep semua sistem mode pengguna memanggil yang Anda inginkan. Dengan menggunakan kerangka ini Anda dapat mengodekan handler generik untuk semua panggilan karena parameter dapat dibaca menggunakan antarmuka COM (misalnya: masing-masing param adalah INktParam dan Anda bisa mendapatkan nilai menggunakan INktParam.Value).

Alternatif lain tetapi biayanya mahal adalah untuk digunakan SpyStudio dari perusahaan yang sama. Produk ini memiliki opsi baris perintah yang berguna untuk mengumpulkan log tanpa GUI.


2
2018-06-25 20:16



Bagaimana tidak ada yang menyebutkan strace? Contoh keluaran:

buka (".", O_RDONLY | O_NONBLOCK | O_LARGEFILE | O_DIRECTORY | O_CLOEXEC) = 3
fstat64 (3, {st_mode = S_IFDIR | 0755, st_size = 4096, ...}) = 0
fcntl64 (3, F_GETFD) = 0x1 (bendera FD_CLOEXEC)
getdents64 (3, / * 18 entri * /, 4096) = 496
getdents64 (3, / * 0 entri * /, 4096) = 0
tutup (3) = 0
fstat64 (1, {st_mode = S_IFIFO | 0600, st_size = 0, ...}) = 0
mmap2 (NULL, 4096, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0) = 0xb7f2c000
tulis (1, "autofs \ nbackups \ ncache \ nflexlm \ ngames" ..., 86autofsA

-5
2017-09-14 03:52