
DriverBuddy is an IDA Python script to assist with the reverse engineering of Windows kernel drivers.
DriverBuddy est un plugin IDAPython qui aide à automatiser une partie de la pénibilité liée à la rétro-ingénierie des pilotes du noyau Windows. Il possède un certain nombre de fonctions pratiques, telles que :
Pouvoir localiser et identifier automatiquement la fonction DispatchDeviceControl est une tâche qui fait gagner du temps lors de la rétro-ingénierie de pilotes. Cette fonction est utilisée pour acheminer tous les codes DeviceIoControl entrants vers la fonction pilote spécifique associée à ce code. Identifier automatiquement cette fonction rend la recherche des codes DeviceIoControl valides pour chaque pilote beaucoup plus rapide. De plus, lors de l'étude de vulnérabilités potentielles dans un pilote à la suite d'un crash, connaître l'emplacement de cette fonction aide à réduire le champ d'investigation à l'appel de fonction spécifique associé au code DeviceIoControl à l'origine du crash.
Plusieurs structures de pilotes sont partagées par tous les pilotes WDM. Pouvoir identifier automatiquement ces structures, comme IO_STACK_LOCATION, IRP et DeviceObject, peut faire gagner du temps lors du processus de rétro-ingénierie. DriverBuddy tente de localiser et d'identifier un grand nombre de ces structures.
Comme pour les pilotes WDM, il existe plusieurs fonctions et structures partagées par tous les pilotes WDF. Identifier automatiquement ces fonctions et structures fera gagner du temps lors du processus de rétro-ingénierie et apportera du contexte aux zones non identifiées du pilote où ces fonctions sont utilisées.
Lors de la rétro-ingénierie de pilotes, il est courant de rencontrer des codes IOCTL au cours de l'analyse. Une fois décodés, ces codes révèlent des informations utiles aux rétro-ingénieurs et peuvent attirer l'attention sur des parties spécifiques du pilote où des vulnérabilités sont plus susceptibles d'exister.
Objectifs secondaires :
Ce logiciel est publié sous licence MIT, voir LICENSE.