Какими способами можно передать данные моему обработчику перехватываемой функции. Вот я внедрился в процесс перехватил функцию, и в обработчике по окончанию мне надо передать управление на оригинальный код. Единственное что приходит в голову - это во внедряемой функции проецировать структуру с данными, а в обработчике просто получать доступ к данным. Вообщем подскажите как можно ещё получить данные.
А ты как перехватывал, сплайс? Тогда делай буффер из старых байт сплайсинга с кодом оригинальной функции, релокнутым на новый адрес, + jmp на продолжение. Допустим у тя была функция original_function с кодом push ebp / mov ebp, esp / push eax / push eax / pop eax / pop eax / leave / ret. Ты ее засплайсил инстркцией jmp hook. Тогда должно получиться так: Код (Text): original_function: jmp hook _cont: pop eax pop eax leave ret splicing_buffer: push ebp mov ebp, esp push eax push eax jmp _cont Или может я тебя не так понял, какие еще данные передавать ты собрался?
да Я так и делаю, создаю буффер копирую 6 байт и jmp на продолжения оригинального кода. Затем сохраняю адрес буффера. А меня интересует как мне передать этот адрес моей перехватывающей функции, я там описал как я думаю с разделяемой памятью всю структуру передать, что бы там строки использовать. Или я в чём то ошибаюсь...
жесто прошить. Когда ты копируешь в процесс назначения свой код функции, у тебя же она завершается джампом на буффер, так? Так перезапиши операнд JMPа при копировании, чтобы скопировался уже правильный код