[+] для HiHook добавлен новый subtype: SAFE_ = 2
- то же самое что и EXTENDED_, однако перед вызовом GetDefaultFunc() восстанавливаются (только на время вызова)
значения регистров процессора EAX, ECX (если не FASTCALL_ и не THISCALL_),
EDX (если не FASTCALL_), EBX, ESI, EDI, бывшие на момент вызова замещенной функции
SAFE_ subtype создан прежде всего для установки хуков поверх воговских, т.к. воговские хуки функций часто не ограничиваются аргументами, но используют значения из регистров процессора в контексте вызова в геройском коде.
проблема решалась и без SAFE_, просто вначале Hi-хука нужно было сохранить значения регистров и восстановить их перед вызовом дефолтной функции. Однако patcher_x86 создан для высокоуровневого модифицирования, и использовать асемблер с ним - идеологически неверно.
(This post was last modified: 24.09.2012 19:33 by baratorch.)