Как следить за исполнительным файлом процесса

Тема в разделе "WASM.NT.KERNEL", создана пользователем Hippey, 19 мар 2012.

  1. Hippey

    Hippey New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2011
    Сообщения:
    49
    Здравствуйте!

    Есть код, который берет путь к файлу процесса:
    Код (Text):
    1. PWSTR GetProcessFullName(IN PEPROCESS process)
    2. {  
    3.     KAPC_STATE                 ApcState;
    4.     PROCESS_BASIC_INFORMATION  ProcessBasicInfo;
    5.     PWSTR imagePath;
    6.     __try
    7.     {
    8.         KeStackAttachProcess ( process, &ApcState );
    9.         if ( NT_SUCCESS ( ZwQueryInformationProcess ( NtCurrentProcess(), ProcessBasicInformation, &ProcessBasicInfo, sizeof ( PROCESS_BASIC_INFORMATION ), NULL ) ) )
    10.         {
    11.             imagePath =  (((PRTL_USER_PROCESS_PARAMETERS) (((PPEB)(ProcessBasicInfo.PebBaseAddress))->ProcessParameters))->ImagePathName).Buffer;
    12.         }
    13.         KeUnstackDetachProcess ( &ApcState );
    14.     } __except ( EXCEPTION_EXECUTE_HANDLER )
    15.     {
    16.     }
    17.     return imagePath;
    18. }
    Все нормально, но вот есть одна проблемка, если процесс запустить из файла test.exe, во время работы процесса сменить имя на test2.exe и потом в драйвере запустить этот код, то он все равно вернет test.exe, а не новое имя файла. Как это исправить?
     
  2. Kaimi

    Kaimi Андрей

    Публикаций:
    0
    Регистрация:
    15 апр 2010
    Сообщения:
    120
    Никак, содержимое PEB и не должно меняться от такого действия.
     
  3. Hippey

    Hippey New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2011
    Сообщения:
    49
    а как тогда можно брать линк на файл правильно?
     
  4. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Hippey
    ZwQueryVirtualMemory(MemorySectionName)
     
  5. comrade

    comrade Константин Ёпрст

    Публикаций:
    0
    Регистрация:
    16 сен 2002
    Сообщения:
    232
    Адрес:
    Russian Federation
    Найди FILE_OBJECT связаный с EPROCESS'ом (сначала секция, потом файл объект) и оттуда мути, но как не уверен. Возможно нужно будет подписаться на операции, типа FileSystemWatcher, но нужно это сделать рано.