Проверка, отслеживается ли API (подключен?)

#c #windows #winapi #hook

#c #Windows #winapi #перехват

Вопрос:

Мое приложение использует некоторые API, подобные GetProcAddress и CreateProcess которые иногда заставляют антивирусы помечать его как вредоносный, даже если это не так.

То, что я пытаюсь сделать, это проверить, отслеживается или подключается конкретный API, и если это так, я не буду вызывать эту часть кода.

Как мне проверить, подключен ли определенный API?

Это приложение для Windows, написанное на C.

Спасибо.

Комментарии:

1. И как бы вы проверили, что ваш детектор API monitor не был подключен?

2. GetProcAddress и CreateProcess сам по себе не должен поднимать никаких флагов для AVS. Используете ли вы удаленную инъекцию dll CreateRemoteThread ? В этом случае сигнатура вашей функции может совпадать с сигнатурой вредоносной программы.

3. Нет внедрения dll и создания удаленного потока. Эти 2 API находятся в разных частях программ, выполняющих разные действия. Знаете ли вы, как проверить наличие перехвата API?

4. «… проверьте, используется ли определенный API … «, о каких API (ах) вы говорите?

5. Нет надежного способа проверить, был ли подключен API, потому что человек, который подключил API, возможно, также подключил ваш детектор API.

Ответ №1:

В win32 нет официальных методов для обнаружения и / или размещения перехватов (кроме SetWindowsHookEx() (http://msdn.microsoft.com/en-us/library/windows/desktop/ms644990 ) и другие функции, которые охватывают только очень небольшой набор функциональных возможностей).

Обнаружение перехвата зависит от того, как был применен перехват.

Существует два популярных метода размещения перехвата:

  1. Исправление таблиц импорта / экспорта
  2. Перезапись кода

Для получения подробной информации (плюсы / минусы) о различных методах размещения перехватов, пожалуйста, прочитайте здесь http://help.madshi.net/ApiHookingMethods.htm .

Для каждого метода подключения требуется свой подход для его обнаружения.

Для методов обнаружения перехватов, размещенных, как указано выше, пожалуйста, посмотрите здесь «Алгоритм ApiHookCheck» http://www.security.org.sg/code/apihookcheck.html . На этой странице доступны примеры источников, которые я не тестировал.

Комментарии:

1. Ссылка на алгоритм ApiHookCheck больше не работает. Не мог бы кто-нибудь предоставить хорошую ссылку на него?

2. @Benny: Это может быть отправной точкой: security.stackexchange.com/q/17904/36769

3. @alk спасибо, я тоже нашел этот вопрос. Похож ли он на алгоритм проверки APIHookChecking, на который вы ссылались в своем ответе?