[-] чтение/изменение esp регистра в LoHook хуке работало неверно
[+] добавлены функции
PatcherInstance::WriteHexHook
PatcherInstance::CreateHexHook
эти функции позволяют установить самый примитивный хук
а именно LoHook без высокоуровневой оболочки-функции.
тело хука пишется прямо в вызове WriteHexHook или CreateHexHook
таким же образом как пишется патч с помощью WriteCodePatch или CreateCodePatch
[+] В любом LoHook хуке теперь доступен для чтения/изменения регистр флагов процессора (расширена структура HookContext)
[+] LoHook теперь хранит экземляр HookContext в стеке, а не по фиксированному адресу, что позволяет корректно рекурсивно выполнять LoHook хук.
[+] теперь внутри функции сработавшей по LoHook хуку можно использовать операции с помещением данных в стэк контекста хука, аналогичные команде процессора PUSH.
размер памяти, доступной для такого помещения в стэк контекста ограничен 128 байтами для хука, созданного с помощью методов PatcherInstance::WriteLoHook и PatcherInstance::CreateLoHook, и произволен для хука, установленного с помощью новых методов
PatcherInstance::WriteLoHookEx
PatcherInstance::CreateLoHookEx.
[+] добавлена функция:
PatcherInstance::BlockAt
которая запрещает данному экземпляру PatcherInstance устанавливать по заданному адресу патчи/хуки
[+] добавлены функции
HiHook::SetUserData
HiHook::GetUserData
[+] расширен функционал PatcherInstance::WriteDataPatch и PatcherInstance::CreateDataPatch
- добавлен формат символ %s (string) - копирует си-строку из аргумента
Добавил SetUserData и GetUserData к HiHook, но функцию установки HiHook хука с одновременным указанием UserData писать не стал.
Ее можно быстро написать самому, используя PatcherInstance::CreateHiHook, HiHook::SetUserData и HiHook::Apply
Есть один нюанс.
В хота 1.2 и в ХД+ версий ниже 3.59 есть критический баг в использовании патчера, который прощали старые версии, но не прощает 2.1
(This post was last modified: 26.10.2013 21:51 by baratorch.)