hook в 64-х битной системе

Тема в разделе "WASM.BEGINNERS", создана пользователем featurelles, 10 мар 2011.

  1. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Собственно, как сделать перехват функции в 64-х разрядной системе?
    )
     
  2. fsd

    fsd New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    353
    а как в любой другой?
     
  3. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    jmp в начало функции... 32-х разрядной... с сохранением пролога в 5 байт
    А вот как сделать грамотно в 64-х разрядной?
     
  4. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    Так же?
     
  5. fsd

    fsd New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    353
    как угодно, до 16 байт можете запатчить, если нестабильность не пугает
     
  6. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Sunzer
    Вроде да, но сколько ...и чего сохранять??
    в 32-х разрядной я сохраняю 5 пять байт пролога функции, и записываю вместо них jmp на нужный адрес.
    А как правильно вычислить и сделать jmp на нужный дарес в 64-х разрядной системе???
     
  7. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    для того, чтобы это знать надо почитать про архитектуру x86-64... конкретно про формат команды jmp, а может быть call, а может быть (о-майн-гот) push/ret... ведь вы имеете ввиду именно x86-64, а не IA-64?)))

    ЗЫ и это не хук, то о чем вы говорите называется "сплайсинг"... только не говорите никому, это страшная тайна)))
     
  8. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Rel
    Ближе к делу.
    Вопрос всё ещё не снят.
     
  9. fsd

    fsd New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    353
    featurelles
    в чем суть вопроса, у вас не получается instruction set reference найти? или готовый пример нужен?
     
  10. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    fsd
    Нужен готовый пример, если не сложно.
     
  11. spa

    spa Active Member

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

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    spa
    Цена вопроса 0.
     
  13. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    featurelles
    в этом то и проблема, вам уже все сказали, надо только взять и написать. Вот по статьям ms-rem'а посмотрите как делается, тоже самое только для х64
     
  14. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Вобщем вопрос проще сделаем.
    Как процессор, высчитывает адрес смещения функции в 64 битной системе?
    в 32-х битной так...
    my_func - адрес функции перехватчика
    modif_func - функция на которую ставится перехватчик
    res = my_func - ( modif_func + 5)

    Как правильно высчитать смещение?
    все мои попытки оканчиваются полным крахом...
     
  15. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Полный крах это то, что ты надумал что-то кодить....
     
  16. fsd

    fsd New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    353
    featurelles
    привелигированную инструкцию в 1 байт в начале функции впишите и обработайте ее исполнение переключив поток куда нужно, работает везде
     
  17. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    mrcrown
    Пожалуйста, больше ничего не пешите, хотябы в этой теме.
     
  18. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    fsd
    Тоесть весь процесс такойже как и в 32-ти битной системе?.. тоесть тут косяка нет? res = my_func - ( modif_func + 5)
    Я думал что значение в скобкох должно быть не +5..а какоето другое
     
  19. fsd

    fsd New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    353
  20. spa

    spa Active Member

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