about WSPStatup and offset _SockProcTable

Тема в разделе "WASM.WIN32", создана пользователем 63F45EF45RB65R6VR, 20 янв 2012.

  1. 63F45EF45RB65R6VR

    63F45EF45RB65R6VR New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2011
    Сообщения:
    70
    Всем привет

    есть функция в mswsock.dll называется WSPStartup в ней есть код загрузки ссылки на таблицу каллбеков (хочу похукать) так вот я распотрошил три версии везде смещение этого кода разное хотел прицепиться за значение опкода (mov esi,imm32) но например в хп надо брать втрой по счету встретившийся опкод а в висте и семерке первый как то не универсально может вбить в зависимости от весии системы смещения да и все ? или может есть хитрый способ поиска ?

    5.1 (xp)
    WSPStartup + 117 mov esi, offset off_71A67260
    6.0 (vista)
    WSPStartup + ED mov esi, offset off_6C9753D8
    6.1 (seven)
    WSPStartup + 10F mov esi, offset off_6C8B6440

    [update]
    впринципе нашел решение в этой теме
    http://wasm.ru/forum/viewtopic.php?id=33357&p=1
    там за нужным mov esi,imm32 идет всегда rep movsd если его тоже включить в сигнатуру поиска то можно однозначно определить
     
  2. Malfoy

    Malfoy New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2012
    Сообщения:
    698
    WSP-стабы можно откатывать, тем самым сделать высокоуровневый фильтр для WSA. Для этого необходимо перечислить все WSA функции, описать их графом на NL = 2 и для каждого стаба найти NL на вызов вектора. Потом из вектора WSP* найти в графе текущую процедуру, извлечь связанный с ней NL, возвратить код ошибки, сохранить адрес процедуры и аргументы в TLS, выполнить стековую маршрутизацию из NL итераций. При возврате сохранить в стек аргументы из TLS и вектор, вызвать соответствующий апи фильтр, который обрабатывает WSA-процедуры. Сложнее немного, чем обрабатывать WSP, но более высокоуровнево.