Про инлайн хуки там неточно. Обратно хуй запрыгнешь, если только 5 байт (т.е. конечно везет часто, но не всегда). Конечно если функция за-detour-ина уже, то все элементарно, но в общем случае посложней, т.к. грануляция декода инструкций выше. Правильный подход: - декоднуть первые N инструкций оригинальной функции, пока их общая длина не станет >= 5 байт - записать их себе - owerwrite первые 5 байтов джампом на себя на вызове: - выполнить свои дела - выполнить те N инструкций - прыгнуть в оригинал четко за ними
no subject
Date: 2017-12-21 09:09 pm (UTC)Конечно если функция за-detour-ина уже, то все элементарно, но в общем случае посложней, т.к. грануляция декода инструкций выше.
Правильный подход:
- декоднуть первые N инструкций оригинальной функции, пока их общая длина не станет >= 5 байт
- записать их себе
- owerwrite первые 5 байтов джампом на себя
на вызове:
- выполнить свои дела
- выполнить те N инструкций
- прыгнуть в оригинал четко за ними