Патчи минимальной длины

Тема в разделе "WASM.RESEARCH", создана пользователем katrus, 26 ноя 2009.

  1. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Возник теоретический спор, какой существует наиболее работоспособный способ установки патча на начало функции? Ограничением является длина "трамплина" который должен быть короче 5 байтов. То есть jmp far ... не подходит. Пока, что сошлись на двух вариантах:
    1. привеллигированная инструкция плюс обработчик исключения. Длина трамплина один байт, но достаточно муторная реализация.
    2. вызов прерывания, с драйвером который "шаманит" адрес возврата в стеке для перехода по нужному адресу. Трамплин - два байта (или один в случае int3). Недостаток - любой антивирус должен "сходить с ума" от такой модификации кода.
     
  2. spa

    spa Active Member

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

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Теория имеет свойство получать практическое применение

    Их всего 4 штуки.
     
  4. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    katrus
    Устремите n на практике в бесконечность (в случае с бряками согласен, это так я от делать нечего)

    а где в условиях задачи это?