Handle current process

Тема в разделе "WASM.WIN32", создана пользователем qwqwqwqw, 25 мар 2009.

  1. qwqwqwqw

    qwqwqwqw New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2009
    Сообщения:
    54
    как можно получить хендл текущего процесса ???
    не просто вызов GetCurrentProcess ,который возвращает константу , а хендл который возвращен createprocess
     
  2. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Эм... А тебе не кажется, что он у каждого владельца РАЗНЫЙ???
    Открой свой процесс через OpenProcess. Если это возможно конечно (Лично я таким извратом не занимался)
     
  3. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    qwqwqwqw
    А зачем?
     
  4. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    Один может использовать DuplicateHandle. Там в качестве исходного хендла можно указать псевдохендл.
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Это необходимо для получения указателя на свой EPROCESS из юзермода прсредством SystemHandleInformation или SystemObjectInformation. Более необходимости открывать свой процесс вроде как нет.
     
  6. qwqwqwqw

    qwqwqwqw New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2009
    Сообщения:
    54
    хорошо .... другой вопрос .... можно ли обратится к процессу (запись ,чтение )
    из другого процесса используя ранее созданный хендл ....
    тоесть получить хендл через NtQueryInformationFile , и обращаться к другому процессу
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Процесс определяется его идентификатором, описатель(хэндл) получается посредством открытия обьекта, при открытии задаются необходимые права права доступа к обьекту. Хэндл может копироваться между процессами.
    Бред.
     
  8. yurza

    yurza New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2008
    Сообщения:
    69
    Вы не про случайно спрашиваете
    BOOL ReadProcessMemory(
    HANDLE hProcess,
    LPCVOID lpBaseAddress,
    LPVOID lpBuffer,
    SIZE_T nSize,
    SIZE_T* lpNumberOfBytesRead
    );

    BOOL WriteProcessMemory(
    HANDLE hProcess,
    LPVOID lpBaseAddress,
    LPCVOID lpBuffer,
    SIZE_T nSize,
    SIZE_T* lpNumberOfBytesWritten
    );
     
  9. qwqwqwqw

    qwqwqwqw New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2009
    Сообщения:
    54
    да .... именно про эти самые .....

    это как ???
     
  10. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    DuplicateHandle
     
  11. qwqwqwqw

    qwqwqwqw New Member

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

    ????
     
  12. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    qwqwqwqw
    Скажи зачем тебе это.
     
  13. qwqwqwqw

    qwqwqwqw New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2009
    Сообщения:
    54
    инжект
     
  14. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    В свой процесс ?
    Не представляю зачем это нужно, но в таком случае достаточно константы NtCurrentProcess = -1.
    [Хотя вероятно ты хочешь скопировать свой хэндл в инжектируемый процесс и в нём выполнять какието действия с процессом, который инжектил..]
     
  15. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Clerk
    Видимо да (совершенно аналогичный вопрос, но только по GetCurrentThread на днях был на другом форуме - похоже из одного места ноги растут :)
    Поэтому ответ видимо должен быть таким: использовать в процессе "чужой" хэндл просто так, напрямую нельзя - нужно либо сделать дубликат через DuplicateHandle, либо открыть свой через OpenXXX
     
  16. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    GetCurrentThread() ацкая функция, для прикола её в экспорт всунули.
    оО не знал..
     
  17. qwqwqwqw

    qwqwqwqw New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2009
    Сообщения:
    54
    кто же сказал что инжект делатся в свой процесс будет .... нет ... не так ...
    примерно вот что программа должна делать :
    1.ищем хендлы процессов через NtQuerySystemInformations (насчет NtQuerySystemFile описалсо ((( )
    2.берем хендл нужного процесса
    3.используем по своему усмотрению writeprocessmemory , etc ....

    такое реально ?
     
  18. yurza

    yurza New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2008
    Сообщения:
    69
    Слушай может тебе статьи MS-REM-а почитать много вапросов отпадет
     
  19. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    По-моему ответ на первоначальный вопрос где-то уже звучл - OpenProcess (PROCESS_xxx, FALSE, GetCurrentProcessId())
    Не понимаю о чем тут дальше дискутируют
     
  20. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Вроде как звучит вполне логично. Если под пунктом 2 понимать DuplicateHandle/ZwDuplicateObject