которой подменяем.
https://www.reddit.com/r/jailbreakdevelopers/comments/w06ujy/mshookfunction_never_enters_the_hooked_function/?rdt=61927
поможет ли забивание пустыми байтами решить проблему и, как можно это сделать, чтобы всю программу не снесло?
Перехватить, или подменить? Это разные вещи. И нет, в любом случае, нельзя просто взять, и затирать старую функцию, копируя на её место свою, только если ты не крутой чувак на ассемблере, который может прямо в исходнике войти в размеры старой функции (times). Обычно на место вставляют push/ret, но при этом старые байты, которые лежали ДО этого push/ret, копируются в конец старой функции. Потому что там обычно пролог, и его надо исполнить в любом случае. Опять же, такое писать надо только на ассемблере, только так ты будешь крутым хукером постигнешь гибкость ассемблера.
Значит делаешь всё так, как я описал. Только с болью, если ты пишешь это не на ассемблере.
спасибо, а пострадать точно придется UPD: сообщение почему-то отправлялось с задержкой
Всегда есть время выучить ассемблер. На FASM я какие только перехваты не писал, и так, и сяк, и переписывал адрес call\jmp внутри функции, и в конце перехватывал адрес возврата (вместо ret - push addr/ret), и даже ломал функцию, ставил SEH, и через SEH перехватывал. Хоспадее, сколько можно всего придумать...
Обсуждают сегодня