PID -> Name..

Тема в разделе "WASM.WIN32", создана пользователем _CC, 23 окт 2005.

  1. _CC

    _CC New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2005
    Сообщения:
    52
    В аттаче исходник, позволяющий получать имя исполняемого файла по его PID (через PEB).. За основу взят код Ms-Rem-а из его статьи.. ;)) Я перевел функцию на С, немного её изменив..



    Может здесь какая-нибудь глупая ошибка, которой я не вижу, но почему всегда возвращается имя текущей программы?.. Мы же читаем память из удаленного процесса..

    [​IMG] _516753981___pid2name.zip
     
  2. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Во-первых, ты обращаешься к RTL_USER_PROCESS_PARAMETERS в своём процессе, во-вторых читаешь путь опять же в своём процессе ;)



    ЗЫ: Определения структур очень "левые".

    [​IMG] 1032628043__pid2name.rar
     
  3. Kalyan00

    Kalyan00 New Member

    Публикаций:
    0
    Регистрация:
    23 окт 2005
    Сообщения:
    2
    Адрес:
    Russia
    Господа!

    ВОЙНЫ!!!



    Огромное Вам спасибо!

    Третий день ищу как можно добыть commandline чужого процесса, но видимо во всем интернете небыло ничего путного, до сегодня 11:50:49 :)



    Скажите, а откуда Вы нарыли описания структур,

    в MSDN'е описание PEB такое
    Код (Text):
    1.  
    2. typedef struct _PEB {
    3.     BYTE Reserved1[2];
    4.     BYTE BeingDebugged;
    5.     BYTE Reserved2[229];
    6.     PVOID Reserved3[59];
    7.     ULONG SessionId;
    8. } PEB, *PPEB;
    9.  


    а в DDK я тоже не нашел...

    P.S. Я бы рад RTFM, но не знаю какой :)

    З.Ы. Спасибо, Удачи!
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Из отладочных символов к нужной тебе ОСЬ из линейки Win.
     
  5. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Kalyan00

    Третий день ищу как можно добыть commandline чужого процесса



    А чего там искать? Внедрение в чужой процесс+GetCommandLine.
     
  6. Kalyan00

    Kalyan00 New Member

    Публикаций:
    0
    Регистрация:
    23 окт 2005
    Сообщения:
    2
    Адрес:
    Russia
    CyberManiac





    А внедрится можно?



    P.S. не на того ламера напали %)
     
  7. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    Самый плохой способ, какой только можно для этого придумать.
     
  8. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    _CC

    если код юзермодный, то я думаю, весьма глупо использовать для этого дела недокументированные структуры, имя файла у тебя всегда будет одно, потому как пеб всегда по одному адресу, или почти всегда. Делай проще,заюзай NtQuerySystemInformation с 5м информационным класом, и оттуда уже вытягивай то, что тебе надо, а имея PiD можем заполучить EPROCESS, только в любом EPROCESS в поле *PEB будет стоять 0xffdf000 ))). Но, если у тебя есть PEPROCESS, то, выполнив к примеру KeStackAttachProcess(PEPROCESS), оказываешься в нужном процессе, а затем, заюзав пеб вытягиваешь оттудова имя и путь своего ехешника )). Это один способ, а второй сам догадайся, он намного прощще, но менее надежен :)
     
  9. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    _CC

    Хы, а вообще , ToolHelp что заюзать, слабо ????
     
  10. _CC

    _CC New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2005
    Сообщения:
    52
    2Four-F:

    Спасибо за код..



    2Ms-Rem:

    >> Самый плохой способ, какой только можно для этого придумать

    Почему?..



    2CARDINAL:

    К чему такой гимор?..

    >> Хы, а вообще , ToolHelp что заюзать, слабо

    Процесс может быть скрытым.. Если бы можно было юзать ToolHelp, никаких проблем бы вообще не возникло..
     
  11. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    _CC

    Вот с этого и надо было начинать. ну тогда пиши дравину )
     
  12. _CC

    _CC New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2005
    Сообщения:
    52
    2CARDINAL:

    >> ну тогда пиши дравину

    Пока как можно дольше пытаюсь держаться в юзермоде.. =)) Но в ядро все равно придется лезть.. А там темно и страшно.. ))
     
  13. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    Потому что это вырезание гланд через 屁股. Я думаю, недостатки ты и сам способен найти :)
     
  14. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Ms Rem

    „Внедрение в чужой процесс+GetCommandLine.“

    Самый плохой способ, какой только можно для этого придумать.




    Все остальные, известные мне, еще хуже. Как говорил мой бывший бриадир, "..ета нестандартная".
     
  15. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"




    Интересно, чем же хуже метод чтения PEB процесса? Неужели он хуже тем, что на него не будут ругаться фаерволлы? Или тем, что при неправильной реализации нет риска уронить чужой процесс? Или тем, что не нужно синхронизировать работу внедряемого кода со своим потоком? Или он хуже простотой реализации? Чем хуже?
     
  16. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow


    Да ну ?))) а ты с фанариком)
     
  17. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Ms Rem



    1. Это _очень_ ОС-зависимая вещь.

    2. Она не документирована, и потому относится к разряду "грязных хаков"и годится только для тех программ, которые не собираются дожить до следующей версии Windows, где структуру PEB могут и поменять.

    3. Есть более прямой и стандартный путь решения этой задачи средствами, предусмотренными разработчиком ОС.



    А что, антивири на него еще не ругаются? Я как-то слышал обратное и вполне доверяю этим слухам. На хуки антивирусы ругаются намного реже, поскольку это вещь стандартная и общеупотребительная, в отличие от.



    Я исхожу из того, что программы работают правильно. Если они работают неправильно - возможно, аффтару нужно заняться работой над ошибками. Или хотя бы описать эти ошибки как особенности алгоритма в прилагаемой документации :)



    Не гарантированной работоспособностью, которая явным образом следует из не документированности производителем ОС. Я уже поимел столько геморроя из-за использования всяких "хаков", что пришел к выводу о необходимости отказаться от использования этой практики в ПО, выставляемом на сколь-нибудь публичное обозрение.
     
  18. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    Работает на всех версиях Windows NT, от NT4 до висты.





    Могут. Но тогда не трудно будет учесть эти изменения.







    Есть тулхелп, но к сожалению с его помощью нельзя узнать командную строку процесса, а вроже бы об этом и шла речь.





    ЛОЛ, неужели антивири ругаються на чтение памяти чужоко процесса, но при этом не ругаються на запись? На запись например будет ругаться Outpost Firewall (и многие другие фаерволлы), а что ругается на чтение? Я о таких программах пока еще не слышал.





    А гарантировать нельзя даже работоспособность обычных, не использующих ничего недокументированого программ. Применительно к этому случаю, работоспособность во всех существующих ОС NT линейки можно гарантировать.



    Давай рассмотрим конкретный случай:

    Есть две программы (типа диспетчера задач), которые могут получать командную строку запущеных процессов.

    Первая делает это чтением PEB, а вторая - инжектом кода вызывающего GetCommandLine.

    Вопрос: какую из них юзер выкинет на помойку при условии что работоспособность первой в следующих версиях ос не гарантирована, а запуск второй вызывает бурную реакцию фаерволла с отрубанием всех процессов от сети?
     
  19. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Ms Rem



    Осмелюсь напомнить, что Vista еще не вышла. А Лонгхорн - не выйдет уже никогда :) Так что заявление насчет Vista преждевременно. А линейку 9х, кстати, тоже никто не отменял.





    Для этого нужно решить одну очень важную проблему - убедиться в том, что таковая возможность будет. Люди, как известно, смертны, причем внезапно смертны. Кроме того, есть много не менее важных причин, которые могут помешать эти изменения внести - начиная от стихийных бедствий и кончая банальной ленью.



    Да на что они только не ругаются. Но на хуки ругаются редко. Реально редко. А если будут ругаться - ф газенваген такие антивири, а их аффтарам выдать призовую бочку йаду с приказом немедленно употребить по назначению.



    Можно. Доказательство соответствия программного кода техническому заданию - вещь вполне реальная, хотя и нечасто используемая.





    Правильный ответ: ф топку отправляется фаер, поскольку он сделает неработоспособным такое количество приложений, что после этого он просто нахрен не нужен по причине невозможности пользоваться инетом вообще.
     
  20. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    Да, возможно преждевременно. Я говорю только, что это справедливо для бета версии висты, которая уже вышла.





    Ну только не на чтение памяти :) Иначе такие антивири точно быстро выкинут.





    Ну, может кто-нибудь выкинет и фаер, а я бы выкинул программу которая лезет куда ей лучше не соваться.