Небольшой реверсинг стороннего API

Тема в разделе "WASM.WIN32", создана пользователем _DEN_, 14 янв 2009.

  1. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Есть private библиотека со своим API. В двух словах - это клиент, он подключается к указанному серверу и читает с него потоковые данные. Сервер также приватен.

    Схематично это выглядит так:

    MYSTERYAPI_CONTEXT ctx = 0;

    mysteryapi_create_context(&ctx);
    mysteryapi_start_communication(ctx, "www.server.com", &packet_callback);
    mysteryapi_run(ctx); // Синхронное чтение

    Есть мой рераутер трафика. Этот рераутер также читает с сервера данные и транслирует их as is на определенном порту всем желающим.

    Задача - сделать аутентификацию на моем рераутере. То есть прежде чем начать транслировать трафик, нужно выполнить некоторый handshake. Проблема в том, что момент создания сокета и соединение на сервер скрыты внутри dll, я не могу выполнить аутентификацию, и после этого отдать сокет библиотеке, мол работай по нему.

    Я вижу один вариант. Ковырять либу и искать, где она держит сокет, чтобы научиться подсовывать ей свой собственный сокет, по которому уже выполнена аутентификация.

    У меня есть два объекта - context и receiver. С точки зрения подключаемого хедера это void*. Понятное дело, что за указателем скрыта недокументированная структура. Я уверен на 95%, что сокет хранится в одной из этих структур. Каким образом можно было бы выяснить, где этот сокет хранится (место и смещение)?
     
  2. TermoSINteZ

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

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    _DEN_
    Может перехватить socket\WSASocket. А дальше глянуть стек ?)
     
  3. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Я не умею ^_^ Это драйвер надо писать? Можно конечно обойтись proxy-dll...
     
  4. TermoSINteZ

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

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    _DEN_
    Естественно proxy-dll. Подменяешь импорт или патчишь байты, как хочешь. Инфы море). Зато узнаешь много ценного для себя. Можно кстати заюзать Detours от майкрософт, они сделали типа SDK для "легального" перехвата :derisive:
    http://research.microsoft.com/en-us/projects/detours/
     
  5. Exp10der

    Exp10der Мастер дзена

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    337
    Адрес:
    Красноярск
    http://www.wasm.ru/article.php?article=apihook_2