Перехват функций приложения

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

  1. furang

    furang New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2006
    Сообщения:
    11
    Добрый день.
    Столкнулся я с такой неразрешимой для меня задачей.
    Надо каким-то образом влезть в чужой процесс и перехватывать параметры и возвращаемые значения его функций (ну api. это функции приложения)
    И если с первой частью все более-менее поянтно (я знаю как минимум 4 способа внедрить в чужой процесс dll-ку)
    , но и там есть свои нюансы. О них чуть позже.
    А вот как перехватывать вызовы функций никак не соображу. Какой это хук? Как я понимаю надо перехватить call по заданному адрессу, заморозить поток, который вызвал call, достать со стека нужные параметры, запустить тот поток, когда отработает опять заморозить, достать возвращенное значение и снова запустить его. Верно?
    Внедрение затруднено тем фактом, что надо внедрится именно в главный поток процесса т.е. вариант с CreateRemoteThread с последующим вызовом LoadLibrary или MapLibrary как я понимаю не пройдет.

    Псалмы ms-rema читал, но видимо что-то недопонял. Кто что сможет подсказать? Буду очень благодарен.
     
  2. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
  3. furang

    furang New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2006
    Сообщения:
    11
    За готовую тулзу спасибо! Там есть немного сорцов, может чем-то поможет.
    Но дело в том, что мне нужна моя тулза, которая будет еще с этими параметрами много интересных вещей делать. Т.е. надо одно приложение которое будет и внедрятся для перехвата и еще много разных вещей делать. Те вещи уже частично реализованы, а вот перехват....
     
  4. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    зачем замораживать поток если твой код перехвата будет в том же потоке выполнятся?
    В чем сложность перехватить ф-цию? Сто раз уже разжевана эта тема. Находишь адрес нужной функи и хукаешь сплайсингом, дело в то )
     
  5. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    *код перехватчика, а не перехвата)
    Ну если ты боишся что за пол секунды которые уйдут на установку хуков нужная тебе ф-ция вызовется пару раз то можешь конечно замораживать потоки))
     
  6. furang

    furang New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2006
    Сообщения:
    11
    сплайсинг это насколько я понимаю поставить в начале функции джамп на свой код и в конце передать управление оригинальному? просто я подобным еще не знимался(
     
  7. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    Да, читай статьи по этой теме, там не сложно:)
     
  8. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    предлагаю запретить темы, тупа "не получается перехват" "помогите с перехватом" "как перехватить апи" "как отловить (далее что то что решается перехватом"
    Просто никто уже не отвечает на эти темы, ибо статей пруд пруди, решения готовые повсюду, что еще надо?
     
  9. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    предлагаю забанить SPA
     
  10. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    ohne
    да я скоро и сам за буду, читать уже нечего на васме, один бред на бреде на бреде
     
  11. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    SPA
    )))), можно было просто проигнорировать или ссылок левых накидать, чтоб постебаться, это не бегиннерс и по правилам тут можно
     
  12. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    ohne
    да я не потив тем для начинающих, я против тем когда в гугл даже не заходили, инфы просто море, и сказать что море это ничего не сказать, просто океан
     
  13. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    furang
    вот по этой ссылке если смотреть
    http://www.google.com.ua/search?q=к...на+фортране,+вб+или+какой-нибудь+другой+буйне
    то ничего нет

    а может так?
    http://www.google.com/search?q=как+перехватить+винапи+так+чтоб+нихуя+не+делать
    тоже нет

    или так?
    http://research.microsoft.com/en-us/projects/detours/
    http://research.microsoft.com/apps/pubs/default.aspx?id=68568

    нет ничего, поздно вы решили хукать - уже не хукают, отхукались
     
  14. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    ohne
    Технический термин "Хук" - это механизм шадова для перехвата сообщений http://msdn.microsoft.com/en-us/library/ms632589(VS.85).aspx
    furang
    Тут метод зависит от целевого кода, необходимо знать что захватывается. Изменение кода это только общий грязный способ.
     
  15. furang

    furang New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2006
    Сообщения:
    11
    ohne
    Благодарю за столь информативный ответ.
    Clerk
    Ну я в двух словах расписал. В чужом процессе надо перехватить функции, которые реализованы в нем (не апи, а именно функции приложения, их адресса и прототипы известны отчасти). Я вобщем то думал что это через хуки делать надо, но не нашел подходящего.
    Насчет детура.... Это может быть то что надо. Только я еще не разобрался он только апи перехватывать умеет или нет.
     
  16. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    furang
    смысл тот же что и в апи, может тока прототип отличаться от stdcall но это не должно быть проблемой, в крайнем случае все решаеться асм вставкой (если не нашел подходящий прототип поддерживаемый твоим компилятором, давай сделаем так: ты начнешь делать и скажешь что у тебя не получается.
     
  17. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    не прототип а метод вызова
     
  18. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    Clerk
    то есть термин "WinApi Hooking", который везде применяется и не только касательно оконных хуков, не верен (или не моден, хз)?
    где-нибудь на форуме нужно прикрепить твой терминологический словарь, чтобы ты не бурлил

    furang
    detours тебе подойдет
    разбирайся, умеет
     
  19. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    ohne
    Да, этот термин не верно определяют. Повторяю, он определяет механизм обработки сообщений. "Похукать" - зарегистрировать такой обработчик в шадове. "Intercepting" более подходящий термин. Наверно ты прав.. на счёт словоря.