Имя процесса

Тема в разделе "WASM.X64", создана пользователем anatolymik, 19 сен 2009.

  1. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    Ребята как получить имя процесса по его PID. А также производителя файла ну вообшщем вот эту инфу:
    [​IMG]
     
  2. Flint_ta

    Flint_ta New Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    312
    OpenProcess
    EnumProcessModules
    GetModuleFileNameExA

    Так получишь имя процесса по его PID

    что касается второй части вопроса, имя производителя зашито в секции ресурсов, т.н. Version info имеет ID = 24 (18h) там примерно такая структура:

    Код (Text):
    1. 1 VERSIONINFO
    2. FILEVERSION 1,0,0,916
    3. PRODUCTVERSION 1,0,0,0
    4. FILEOS 0x40004
    5. FILETYPE 0x2
    6. {
    7. BLOCK "StringFileInfo"
    8. {
    9.     BLOCK "041904B0"
    10.     {
    11.         VALUE "CompanyName", "Microsoft Corporation"
    12.         VALUE "FileDescription", "Калькулятор Плюс для Windows"
    13.         VALUE "FileVersion", "1.0.0916"
    14.         VALUE "InternalName", "CALCPLUS"
    15.         VALUE "LegalCopyright", "© Корпорация Майкрософт. Все права защищены."
    16.         VALUE "OriginalFilename", "CalcPlus.exe"
    17.         VALUE "ProductName", "Microsoft® Калькулятор Плюс"
    18.         VALUE "ProductVersion", "1.0"
    19.     }
    20. }
    21.  
    22. BLOCK "VarFileInfo"
    23. {
    24.     VALUE "Translation", 0x0419 0x04B0
    25. }
    26. }
    Вот отсюда все и прочитаешь. В твоем случае драйвер имеет еще и цифровую подпись, она обычно хранится в оверлее.
     
  3. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    хорошее дело. ладно а как получить доступ к секции ресурсов? и как я понял эта секция выгружаеться после инициализации драйвера, тогда будет ли она там?
     
  4. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    тоько что просмотрел, похоже эта информации в секции data. так или нет?
     
  5. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    anatolymik
    а дисковый ввод вывод не работает?
     
  6. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    в нулевом кольце в hal.dll будет он работать? я hal.dll отмодил, только мне еще одну проверку надо вставить, а имеено кто запрощик
     
  7. Flint_ta

    Flint_ta New Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    312
    Открываешь файл для чтения, читаешь указатель (PE offset = dword) на PE заголовок, он находится по смещению 3ch от начала файла. Далее к началу файла прибавляешь PE offset и стоишь на PE заголовке, далее прибавляешь еще 88h (PE + 88h) и считываешь dword - это есть виртуальный адрес директории ресурсов, размер директории ресурсов находится по смещению (PE + 8Ch). Т.о Имеешь виртуальный адрес и размер директории ресурсов, далее нужно виртуальный адрес преобразовать в физический, для этого нужно определить к какой секции принадлежит виртуальный адрес, как это сделать стоит рассказывать? :)
     
  8. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    стоит. а также стоит рассказать как я определю имя и расположение файла
     
  9. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    а также если можно структуру этой секции, и как там все кодируеться. я как понял там ЮНИКОД так?
     
  10. Flint_ta

    Flint_ta New Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    312
    Об я написал выше.

    Думаю, для начала тебе стоит покурить доки по PE формату.
     
  11. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    почитал.
    пока читал докапался вот до чего:

    GetFileVersionInfo()
    GetFileVersionInfoSize()
    VerQueryValue()

    только вот вопрос у меня
    вот пример

    VerQueryValue(Buf, PChar('StringFileInfo\040904E4\' + InfoStr), Pointer(Value), Len)

    040904E4 <- вот эти циферки везде по разному. как быть?
     
  12. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    так значит GetModuleFileNameExA возвращает полный путь. тогда вот остаеться только вопрос о том как с теми циферками что сверху.
     
  13. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    EnumProcessModules <- она возвращает иерархию процессов, которые были вызвано до того как была вызван данный процесс?
     
  14. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    Вообще я понял что эти цифирки значат. первые четыре язык, оставшиеся кодировка. скажить как мне теперь точно угадать эти цифры, я имею ввиду и кодировку и язык. или надо перебирать все варианты?