Вы не можете напрямую дотронуться до указателя инструкций, но вы можете получить его, если нужно, с помощью простого трюка:
fetch_eip: mov eax, [esp]
ret
Тогда:
call fetch_eip
Это будетпоместите значение eip
, указатель инструкции, в eax
(потому что это будет то, на что указатель стека esp
ссылался при вызове в fetch_eip
).
Недопустимо иметьeip
будет пунктом назначения mov
, так что вы не можете напрямую играть с eip
.Единственный способ повлиять на это - с помощью операций перехода, операций вызова (используемых этим трюком) и некоторых других ограниченных случаев.