Guest User

Untitled

a guest
Oct 17th, 2017
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.07 KB | None | 0 0
  1. FLT_POSTOP_CALLBACK_STATUS PostCreate(
  2.     __inout PFLT_CALLBACK_DATA Data,
  3.     __in PCFLT_RELATED_OBJECTS FlteObject,
  4.     __in_opt PVOID CompletionContext,
  5.     __in FLT_POST_OPERATION_FLAGS Flags
  6.     ) {
  7.  
  8.         PHANDLE pH;
  9.         PFILE_OBJECT pFileObject;
  10.  
  11.         if (!NT_SUCCESS( Data->IoStatus.Status ) ||
  12.                      (STATUS_REPARSE == Data->IoStatus.Status)) {
  13.  
  14.                       return FLT_POSTOP_FINISHED_PROCESSING;
  15.               }    
  16.        
  17. __try{
  18.  
  19.             __try{
  20.  
  21.         PEPROCESS callerProcess = IoThreadToProcess(Data->Thread);
  22.  
  23.         if (pFileObject->Flags == FO_HANDLE_CREATED) {
  24.         NTSTATUS ntstuatus = ObOpenObjectByPointer(callerProcess,
  25.                                                    0,
  26.                                                    NULL,
  27.                                                    READ_CONTROL,
  28.                                                    NULL,
  29.                                                    KernelMode,
  30.                                                    pH); }
  31.  
  32.         finally{
  33.  
  34.         if (!NT_SUCCESS(ntstatus)) {
  35.            
  36.             return STATUS_ACCESS_DENIED; }
  37.  
  38.                }
  39.         }
  40.        
  41.         }
  42.  
  43.         HANDLE hProcess = pH;
  44.  
  45.         DWORD WINAPI pID =  GetProcessId(pH);
  46.  
  47.         (VOID) pidListUser(pID, *list);
  48.  
  49.         return FLT_POSTOP_FINISHED_PROCESSING;
  50.  
  51. }
Add Comment
Please, Sign In to add comment