API Spying
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: ответы на сканворды, решебник по математике 6
| Добавил(а) на сайт: Lisicyn.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата
Вызвать отслеживаемую функцию.
Ограничения
Ограничения связаны с тем, что отслеживаемая функция должна работать без изменений. Для этого перед её вызовом:
Необходимо привести стек в то же состояние, которое было до начала работы функции-шпиона. Это значит, что, во-первых, нельзя сохранить в стеке какое-нибудь значение для использования после возврата из отслеживаемой функции, во-вторых, нельзя использовать для вызова инструкцию call, так как она добавит в стек адрес возврата (на эту тему см. ниже, в разделе «Получение управления после возврата из отслеживаемой функции»).
Поскольку в принципе параметры могут передаваться и в регистрах, желательно привести регистры в то же состояние, которое было до начала работы функции-шпиона, или хотя бы в максимально близкое.
Код, который надо сгенерировать
Так как код функции-шпиона может располагаться в памяти по произвольному адресу, при вызове из неё функций необходимо либо использовать абсолютную адресацию, либо при генерации вычислять их адреса для каждой новой функции-шпиона.
Оба подхода одинаково просто реализуются, но из-за особенности системы команд Intel x86 ближний вызов/передача управления по абсолютному адресу будет выглядеть примерно так:
; Вызов mov eax, <абсолютный адрес функции > call eax ; Передача управления mov eax, <абсолютный адрес функции> jmp eax |
То есть, как ни старайся, а значение одного регистра (в данном примере регистра eax, но на его месте мог быть каждый) сохранить не удаётся.
Поэтому выбрана версия с относительной адресацией:
pusha ; сохраняем регистры и флаги. pushf ; Это, конечно, паранойя... push <номер> ; передаём в параметре номер отслеживаемой функции call <относительный адрес функция сбора статистик>
popf ; восстанавливаем флаги popa ; и регистры
jmp <относительный адрес отслеживаемой функции> Рекомендуем скачать другие рефераты по теме: конспект 5 класс, шпаргалки по физике. Категории:Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата Поделитесь этой записью или добавьте в закладки |