перехват API x64

Тема в разделе "WASM.X64", создана пользователем nMaxwell, 22 мар 2011.

  1. nMaxwell

    nMaxwell New Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    77
    нужно перехватить какую нибудь функцию у процесса (или 64 или 32)
    на 32-разрядной ОСи работало все по примерам MS-Rem'a а вот в 64 начались проблемы
     
  2. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    и что вы сделали для их решения? запостили на васм?
     
  3. nMaxwell

    nMaxwell New Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    77
    да, я в этой области не силен, нужен пинок под зад в нужном направлении, а не ругание
     
  4. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.548
    Адрес:
    Russia
    nMaxwell
    Тогда берем в руки интел маны по 64 битным командам (считайте это пинком под зад). И штудируете.
     
  5. nMaxwell

    nMaxwell New Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    77
    грамотно построенный вопрос - половина ответа.. в общем мне нужен перехват сплайсингом, если он, конечно, реализуем в x64
    за пример был взят MS-Rem'овский AdvAPIHook (delphi). что нужно сделать чтоб этот код работал под x64
    http://wasm.ru/article.php?article=apihook_1
     
  6. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    nMaxwell
    Варианты разные могут быть. Как ситуация выглядит более конкретно?
     
  7. felize

    felize New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2009
    Сообщения:
    39
    в сорцах касперского лежит интересная либа, судя по названию - то что автору нужно.
    sources\Windows\Hook\R3Hook64
    описание в hookbase64.h
     
  8. nMaxwell

    nMaxwell New Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    77
    надо перехватить функции типа ReadFile, WriteFile (kernel32) и т.п. с помощью сплайсинга или чем нибудь более подходящим

    спасибо за наводку, будем копать
     
  9. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    nMaxwell
    Я так понимаю, что тело ф-ии, вызываемой в случае перехвата находится в другом модуле? Тогда можно сделать так:

    1. Вставляем в тело перехватываемой ф-ии прыжок 'jmp0 rel32' на конец кодовой секции в kernel32.dll. В конце кодовой секции (обычно там есть какое-то количество свободных байт для выравнивания) вставляем прыжок по косвенному адресу 'jmp1 [rip + XXXXXXXX]'.
    2. По смещению XXXXXXXX в конце секции данных kernel32.dll (тоже свободное место) помещаем qword с адресом нового тела функции.
    3. Собственно, PROFIT.

    Я так делал для перехвата в ntdll.dll на 64битной системе, работало.
     
  10. nMaxwell

    nMaxwell New Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    77
    спасибо за информацию

    вопрос решен, все есть в сорцах каспера, тему можно закрывать