Передача данных внедрённому коду.

Тема в разделе "WASM.BEGINNERS", создана пользователем teller, 19 янв 2008.

  1. teller

    teller New Member

    Публикаций:
    0
    Регистрация:
    19 янв 2008
    Сообщения:
    3
    Какими способами можно передать данные моему обработчику перехватываемой функции. Вот я внедрился в процесс перехватил функцию, и в обработчике по окончанию мне надо передать управление на оригинальный код. Единственное что приходит в голову - это во внедряемой функции проецировать структуру с данными, а в обработчике просто получать доступ к данным. Вообщем подскажите как можно ещё получить данные.
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    А ты как перехватывал, сплайс? Тогда делай буффер из старых байт сплайсинга с кодом оригинальной функции, релокнутым на новый адрес, + jmp на продолжение.

    Допустим у тя была функция original_function с кодом push ebp / mov ebp, esp / push eax / push eax / pop eax / pop eax / leave / ret.
    Ты ее засплайсил инстркцией jmp hook.
    Тогда должно получиться так:

    Код (Text):
    1. original_function:
    2.     jmp hook
    3. _cont:
    4.     pop eax
    5.     pop eax
    6.     leave
    7.     ret
    8.  
    9. splicing_buffer:
    10.    push ebp
    11.    mov ebp, esp
    12.    push eax
    13.    push eax
    14.    jmp _cont
    Или может я тебя не так понял, какие еще данные передавать ты собрался?
     
  3. teller

    teller New Member

    Публикаций:
    0
    Регистрация:
    19 янв 2008
    Сообщения:
    3
    да

    Я так и делаю, создаю буффер копирую 6 байт и jmp на продолжения оригинального кода. Затем сохраняю адрес буффера. А меня интересует как мне передать этот адрес моей перехватывающей функции, я там описал как я думаю с разделяемой памятью всю структуру передать, что бы там строки использовать. Или я в чём то ошибаюсь...
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    жесто прошить.

    Когда ты копируешь в процесс назначения свой код функции, у тебя же она завершается джампом на буффер, так?
    Так перезапиши операнд JMPа при копировании, чтобы скопировался уже правильный код
     
  5. teller

    teller New Member

    Публикаций:
    0
    Регистрация:
    19 янв 2008
    Сообщения:
    3
    Понял, спасибо Great !