2008-08-17 23 views
5

Tôi đang cố gắng tìm một tệp nhật ký mà ứng dụng đang viết.Bất kỳ cửa sổ apis để có được xử lý tập tin bên cạnh createfile và openfile?

Tôi đã ghép nối thành công createfile với thư viện detours từ MSR, nhưng createfile dường như không bao giờ được gọi với tệp mà tôi quan tâm. Tôi cũng đã thử hooking openfile với cùng một kết quả.

Tôi không phải là nhà lập trình có kinh nghiệm/lập trình C++ (hoặc thậm chí là lập trình viên có kinh nghiệm), vì vậy hai ý tưởng ban đầu của tôi là ứng dụng gọi createfile trước khi tôi treo apis hoặc có một số api khác để tạo tệp/có được xử lý cho họ.

Chỉnh sửa: Cảm ơn hai câu trả lời tuyệt vời. Tôi sẽ upvote trả lời codingthewheel kể từ khi nó được nhiều thông tin, nhưng tôi không có đủ diện :(

Trả lời

8

Bạn có thể sử dụng số FileMon của Sysinternal. Đây là một màn hình tuyệt vời có thể cho bạn biết chính xác các cuộc gọi hệ thống liên quan đến tệp nào đang được thực hiện và các tham số là gì.

Tôi nghĩ rằng cách tiếp cận này dễ dàng hơn nhiều so với việc gọi các cuộc gọi API và ít xâm phạm hơn nhiều.

+0

Filemon, và ứng dụng chị em của nó Regmon là công cụ tuyệt vời –

+1

FileMon đã được superceded bởi ProcMon (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx) –

6

Dưới đây là một liên kết mà có thể được sử dụng:

Guerilla-Style File Monitoring with C# and C++

Có thể tạo ra một tập tin mà không cần chạm vào CreateFile API nhưng tôi có thể yêu cầu phương pháp tiêm DLL nào bạn đang sử dụng? Nếu bạn đang sử dụng thứ gì đó như Windows Hooks, DLL của bạn sẽ không được cài đặt cho đến khi ứng dụng đích khởi tạo và bạn sẽ bỏ lỡ các cuộc gọi ban đầu đến CreateFile Trong khi nếu bạn đang sử dụng một cái gì đó giống như DetourCreateProcessWithDll hook CreateFile của bạn có thể được cài đặt trước bất kỳ ap nào mã khởi động plication đang chạy. Theo kinh nghiệm của tôi, 99,9% tệp đã tạo/mở đã dẫn đến một lệnh gọi đến CreateFile, bao gồm các tệp được mở qua thư viện C và C++, libs của bên thứ ba, v.v. Có thể có một số chức năng DDK không có giấy tờ không định tuyến qua CreateFile, nhưng đối với một tệp nhật ký điển hình, tôi nghi ngờ nó.