Vérifier si une API est surveillée (accrochée?)

Mon application utilise des API telles que GetProcAddress et CreateProcess qui CreateProcess parfois aux antivirus de la CreateProcess comme malveillante, même si ce n’est pas le cas.

Ce que j’essaie de faire est de vérifier si une API spécifique est surveillée ou connectée et si c’est le cas, je n’appellerai pas cette partie du code.

Comment vérifier si une certaine API est connectée?

Ceci est une application Windows écrite en C.

Merci.

Sur win32, il n’existe aucune méthode officielle permettant de détecter et / ou de placer des crochets (hormis les fonctions SetWindowsHookEx() ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms644990 ) et autres qui couvrent uniquement très petit ensemble de fonctionnalités).

La détection d’un crochet dépend de la façon dont le crochet a été appliqué.

Il existe deux méthodes populaires pour placer un crochet:

  1. Correction de table d’importation / exportation
  2. Écrasement de code

Pour plus de détails (avantages / inconvénients) sur les différentes méthodes de fixation des crochets, veuillez consulter le lien suivant : http://help.madshi.net/ApiHookingMethods.htm .

Chaque méthode d’accrochage nécessite une approche différente pour la détecter.

Pour connaître les méthodes de détection des crochets placés comme indiqué ci-dessus, veuillez consulter la section “Algorithme ApiHookCheck” à l’ adresse http ://www.security.org.scode/apihookcheck.html. Des exemples de sources sont disponibles sur cette page, que je n’ai pas testées.