[英]In Windows, how can I trace in C which files a child process reads and writes?
正如您所建議的,這是一個相當簡單的任務,可以通過 DLL 注入的 API 掛鈎來解決。
這是一篇關於應用程序的相當不錯的文章: API hooking 揭示
我相信你可以找到更多關於這個問題的最新文章。
但是,您可能需要使用 C++ 來實現這樣的實用程序。 順便說一下,程序可以禁用 DLL 注入。 例如,我無法在Photoshop的試用版上使用這種方法。
因此,在開始編寫自己的解決方案之前,您可能需要檢查是否可以使用現有解決方案在所需的進程中注入 DLL 文件。
不幸的是,似乎沒有簡單的方法來攔截 Windows 上的文件級操作。
這里有一些提示:
如果您想更好地理解並且不害怕手動完成,Windows 攔截文件 I/O 的方法是使用文件系統過濾器驅動程序。 實際上,Windows 系統中嵌入了一個FilterManager ,可以將所有文件系統調用轉發給minifilters 。
要構建它,與系統的接口由 FilterManager 提供,您只需 (...) 編寫代碼並安裝執行實際過濾的微過濾器- 再次注意從未測試過...
請查看文章CDirectoryChangeWatcher - ReadDirectoryChangesW all wrap up 。
這是一種非常古老但正在運行的監視目錄更改的方法。
微軟擁有一系列名為Sysinternals的工具。 有一個名為Process Monitor的程序,它將向您顯示特定進程的所有文件訪問。 這很可能是您想要的。
檢查這個特定的堆棧溢出問題以解決您的問題...這可能對您有所幫助: Windows 中是否有類似 Linux ptrace 系統調用的東西?
此外,如果您運行的是Windows XP等較低版本,那么您應該查看Process Monitor 。
另外,我想讓你檢查一下...... 監視由 Windows 中的進程完成的某些系統調用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.