Регистр eip - 32 бита, и он увеличивается для каждой новой команды. Итак, что произойдет, когда он достигнет максимального значения для 32-разрядного номера: 4294967295.Что происходит, когда регистр eip достигает своего максимального значения?
3
A
ответ
6
Как правило, вы не позволяете этому случиться. % eip не увеличивается безоговорочно; на него влияют инструкции по управлению потоком (например, jmp
, call
, bcc
и т. д.).
На практике это поведение непредсказуемо. На некоторых процессорах переполнение% eip вызывает ошибку. На некоторых других он молча обертывается до нуля.
Эти несоответствия привели к известному эксплойту (оригинального) загрузочного ПЗУ Xbox, поскольку наборы для разработки использовались процессорами AMD (которые были повреждены на wraparound), тогда как на аппаратных средствах использовались процессоры Intel (а это не так). Для получения дополнительной информации см. Hacking The Xbox: An Introduction to Reverse Engineering, стр. 140.