ZwOpenProcess- не хочет открывать по имени ... Что не так делаю?

Тема в разделе "WASM.WIN32", создана пользователем coocky, 12 дек 2007.

  1. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Код (Text):
    1. ULONG n;
    2.     HANDLE ProcessHandle=NULL;
    3.     OBJECT_ATTRIBUTES attr;
    4.     IO_STATUS_BLOCK res;
    5.     UNICODE_STRING filename;
    6.  
    7.     WCHAR *stringBuffer=(PWCHAR)RtlAllocateHeap( Heap, 0, 512 );
    8.  
    9.     wcscpy(stringBuffer,L"MyProcess.exe");
    10.  
    11.     filename.Buffer = stringBuffer;
    12.     filename.Length =  sizeof(WCHAR)* wcslen (filename.Buffer);
    13.     filename.MaximumLength = 512;
    14.  
    15.     InitializeObjectAttributes (&attr, &filename, OBJ_CASE_INSENSITIVE, 0, 0);
    16.  
    17.     n=ZwOpenProcess(&ProcessHandle,PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,&attr,NULL);
    Вот так не получается-возвращает какой-то нелепый код ошибки. Однако если открывать по PID-тогда все ок.Но мне нужно по имени :)
     
  2. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    какой?
     
  3. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Да фиг его знает ULONG =3221225531 :)
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    coocky
    в хекс переводи. это NTSTATUS

    а открытие по имени вроде она не поддерживает.
    тебе придется перечислить все процессы и найти пид по имени. потом открыть уже
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    0xC000003B is STATUS_OBJECT_PATH_SYNTAX_BAD
     
  6. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Понятно.Сенкс :)
     
  7. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Ух ты :) У меня и определения такого нет :)
    Так что-все же неправильный синтаксис или нельзя определить?
     
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    хотя в мсдн написано

    The process object that the ZwOpenProcess method is attempting to open is located by name or by locating a thread whose client ID matches the specified client ID and then opening that thread's process.
     
  9. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    кстати видимо дело в том, что в цепочке вызовов NtOpenProcess => ObOpenObjectByName => ObpLookupObjectName идет проверка

    Код (Text):
    1.         //
    2.         //  If the name we're looking for is empty then it is malformed.
    3.         //  Also it has to start with a "\" or it is malformed.
    4.         //
    5.  
    6.         if ((ObjectName->Length == 0) ||
    7.             (ObjectName->Buffer == NULL) ||
    8.             (*(ObjectName->Buffer) != OBJ_NAME_PATH_SEPARATOR)) {
    9.  
    10.             return( STATUS_OBJECT_PATH_SYNTAX_BAD );
    11.         }
    Имя объекта, видимо,полюбому должно начинаться с разделителя
     
  10. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Ага.Сенкс :)
     
  11. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    а случайно не \Process\имя_процесса ?
     
  12. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    n0name
    ну вот как раз может быть что так.
     
  13. Songoku

    Songoku Эдгар

    Публикаций:
    0
    Регистрация:
    1 мар 2003
    Сообщения:
    68
    Адрес:
    Belarus
    Если честно то функция немного тупаватая! А что есть программ 2 раза запущенна, то какую именно она должна открывать?
     
  14. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    гы))
    Короче лучше самому перечислить процессы через ZwQuerySysInfo, найти тот, который надо, и открывать по пиду