Skip to content

Posts from the ‘applicatif’ Category

2
juil

Abusing Naive Compiler for IAT Hooking par Homeostasie

1. Introduction

 

A une époque lointaine et mystérieuse, lorsque je tâchais de comprendre le principe de l’IAT (Import Address Table), je me suis intéressé aux méthodes pour hooker, ou crocheter en terme bien français, certaines APIs. Il s’avérait que la méthode bien connue est de parser le fichier PE (Portable Executable) à la recherche de la section d’importation répertoriée dans le tableau DataDirectory. Cette section étant elle-même un tableau de structure IMAGE_DIRECTORY_ENTRY_IMPORT associée à chaque DLL importée.
Cette méthode largement employée m’a semblé trop commune et j’ai cherché un moyen pour modifier une entrée de l’IAT sans avoir besoin de réaliser tout ce travail de parsing.

La solution retenue, néanmoins non fonctionnelle sur tout les exécutables, est d’abuser d’un programme compilé par un compilateur dit naïf.


Dans un premier temps, je vous expliquerai donc ce qu’on entend par compilateur « naïf » et moins « naïf ». Pour la partie pratique, je fournirai un exemple de programme qui permet de modifier une entrée de l’IAT lorsqu’un binaire est compilé avec un compilateur dit « naïf ». Finalement, j’irai encore plus loin avec l’utilisation de cette méthode pour hooker une API sans avoir besoin de modifier l’entrée dans la table d’importation.

 

Continue reading “Abusing Naive Compiler for IAT Hooking par Homeostasie” »