[C++] Отслеживание подмены адреса функции в .exe

Тема в разделе "LANGS.C", создана пользователем MuForum, 24 ноя 2008.

  1. MuForum

    MuForum Member

    Публикаций:
    0
    Регистрация:
    11 мар 2007
    Сообщения:
    109
    Доброе время суток!
    - Столкнулся со следующей проблемой, есть программа(снифер), которая присоединяется к процессу и пропускает через себя все пакеты.
    - Через 'Rootkit Unhooker' отследил, что программа подменяет адрес функции в main.exe.
    Код (Text):
    1. Hooked Object: [PID]ApplicationName-->>HookDll-->>HookFunction
    2. Hook Address and Location: OriginalAddress-->>HookAddress - [PathToHookDLL]
    3. Type of Hook: Inline - RelativeJump
    - Правильно ли я описал всё?

    P.S. -> Пробовал отследить это в таблице импорта main.exe, но результат отрицательный, более того, смотрел через LordPE - там тоже ничего не видно. (Адреса функции WS2_32.DLL сохраняются)
    - Мне необходимо как-то отслеживать эти изменения адресов функции как в 'Rootkit Unhooker'.

    P.S. -> Буду благодарен за любые советы и направления.

    # Добавлено: И если кто-то может, очень хотелось бы узнать, как выполняет это отслеживание сама программа 'Rootkit Unhooker'. (Использует драйвер?)
     
  2. only

    only New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2008
    Сообщения:
    147
    Меняется не в импорте. В стабе функции - переход на обработчик.
     
  3. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    MuForum
    Просто сохряняй оригиинальные первые байты функций, которые могут быть перехвачены, потом периодически сверяй. Еще можно, например, написать драйвер, который не даст возможность открыть твой процесс (хук NtOpenProcess). В том же драйвере можно хукать NtProtectVirtualMemory, чтобы хукер не смог изменить аттрибуты защиты страниц, ведь по умолчанию писать на адреса DLL, в которых есть код нельзя.
     
  4. MuForum

    MuForum Member

    Публикаций:
    0
    Регистрация:
    11 мар 2007
    Сообщения:
    109
    - Благодарю за совет. (Сейчас буду копаться)

    P.S. -> Если можешь подкинуть какие-то названия полезных книг/статей/ссылки, буду благодарен.
    - Сейчас на RSDN читаю.
     
  5. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Если снифер написан специально под твой код, никакие защиты тебе не помогут. Будешь проверять свой код в памяти - тебе подсунут поддельную ws2_32.dll, будеш проверять ее - будут юзать LSP, а не LSP так raw сокеты, потом надоест - и просто убьют твою защиту...
    А если снифер универсальный и переделывать его никто не будет - раз тебе хукают импорт - переделай его, чтоб хуки не работали.