Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
IAT-Hook — DLL C++ qui effectue un hooking de la Import Address Table en analysant les en-têtes PE et en redirigeant les adresses des fonctions importées vers un hook personnalisé à l'intérieur d'un processus cible. | Kitploit
Outils/GitHubGitHub/gmh5225/iat-hook
Mécanismes de PersistanceAnalyse de CodeRétro-ingénierieAnalyse de MalwareRed TeamingDéveloppement de Charges UtilesExploitation de Binaires
GitHubgmh5225/iat-hook

IAT-Hook

DLL C++ qui effectue un hooking de la Import Address Table en analysant les en-têtes PE et en redirigeant les adresses des fonctions importées vers un hook personnalisé à l'intérieur d'un processus cible.

Voir le dépôt
1il y a 4 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Hooking - IAT

Hooking

Le hooking est une technique qui permet à un utilisateur de rediriger le flux d'exécution d'un programme. La plupart du temps, nous utilisons le hooking de fonctions. Nous allons soit remplacer, soit rediriger une fonction vers la nôtre ; c'est très utile et cela a de multiples cas d'usage. Il existe plusieurs façons de faire du hooking ; ici, nous nous intéressons au IAT Hooking, qui signifie Import Address Table. Cela consiste à remplacer l'adresse d'une fonction par la nôtre dans une grande table qui est remplie à l'exécution. Comme je l'ai déjà indiqué dans un autre dépôt, je vous recommande de vous renseigner davantage sur le PE Format pour comprendre la partie d'analyse de l'IAT de ce code. Voici un schéma basique du fonctionnement du IAT Hooking. Dans cet exemple, la fonction originale est appelée après que le code malveillant a été exécuté. Dans cet exemple, nous appellerons simplement une autre fonction à la place de l'originale. L'avantage de cette technique est qu'elle ne nécessite pas de modifier le corps d'une fonction, contrairement à un hook classique par patch de la section .text avec des detours, qui doit modifier les instructions au début d'une fonction pour y placer un jmp par exemple.

image

Étapes du hooking

C'est en réalité bien plus simple que cela n'en a l'air ; nous allons procéder en interne pour faciliter les choses, ce qui signifie que ce dépôt compilera en une DLL qui peut être injectée dans le processus cible à l'aide de mes injecteurs LoadLibraryA ou Manual Mapping pour l'injecter dans le processus cible.

D'abord, nous analysons les PE Headers du processus cible pour localiser l'Import Descriptor comme ceci :

process_base + nt_header->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;

Nous pouvons ensuite parcourir chaque module importé, parcourir chaque fonction de ce module (c'est la raison des boucles imbriquées) et trouver l'adresse de cette fonction qui a été remplie à l'exécution. Dans cet exemple, nous allons hooker TranslateMessage, qui est utilisée par Windows pour traiter les événements des interfaces graphiques. Donc, une fois que nous avons trouvé l'adresse de cette fonction, nous la remplaçons par l'adresse de notre propre fonction que nous avons définie précédemment et qui existe dans le contexte du processus distant puisque nous sommes en interne. N'oubliez pas d'utiliser VirtualProtect pour vous assurer que vous avez la permission d'écrire à cet emplacement.

VirtualProtect(&firstThunk->u1.Function, sizeof(uint64_t), PAGE_READWRITE, &old_protection);
firstThunk->u1.Function = (uint64_t)hookfunction;

Démonstration

Comme vous pouvez le voir, lorsque notepad appelle TranslateMessage (presque tout le temps), cela exécutera notre fonction de hook, qui finit par afficher une boîte de message !

image

Télécharger l’outil