2010-04-09 82 views
0

是否有任何方法來覆蓋Win32 File API,如CreateFile()?我希望我的應用程序僅爲我的應用程序查看虛擬文件,但是,虛擬文件​​實際上並不存在。通過覆蓋Win32文件API來實現虛擬文件

+0

您是否需要使用標準Win32 API來操作虛擬文件?我會創建自己的文件系統對象和函數,如果這不是一個需求,這意味着你可以任何你想要的行爲。 – 2010-04-09 12:20:45

+0

我已經擁有了自己的API,它的API不是標準的Win32 API。我希望我的應用程序使用其他庫,不能使用我的虛擬文件庫能夠使用我的虛擬文件庫。這就是爲什麼我想重寫Win32文件API。 – 2010-04-11 10:49:14

+0

你有多遠?請分享!我似乎可以在某些情況下完成DLL注入。 – menjaraz 2012-04-26 13:32:40

回答

1

存在兩種方法 - 使用內核模式驅動程序(記錄一個)並且沒有這種驅動程序(一種冒險的方式)。 (1)創建一個虛擬文件系統驅動程序(或現有的驅動程序)和(2)創建一個文件系統過濾器驅動程序(或現有的驅動程序)。駕駛員的發展=一年左右的工作要做到完全正確。在MSDN中完整記錄驅動程序開發。

沒有內核模式驅動程序,您需要使用API​​掛鉤。像Detours,MadCodeHook和Boxedapp SDK這樣的庫可以做到這一點(並且可以讓你這樣做)。

掛鉤的API主題是相當大的描述它在這裏完全,但有一個很好的CodeProject article這個主題。

0

全系統?餿主意。如果它只是您的應用,請不要使用標準API並自行實施。但是,如果數據必須在會話之間持續存在,則必須將數據存儲在某處(文件,註冊表等)。

+0

不是系統範圍的,而是僅用於我的應用程序。我已經有一個虛擬文件庫,但是,它不能被其他無法訪問我的虛擬文件庫的庫使用。 – 2010-04-11 10:50:37

+1

http://www.codeproject.com/KB/system/Paladin.aspx – 2010-04-11 12:39:54