
IDA Pro utilities from FLARE team
Code Grafter est un script IDA Python qui permet d'utiliser le mode Bochs IDB d'IDA Pro pour émuler du code qui importe des fonctions de l'API Windows. Les environnements d'émulation comme le mode Bochs IDB ne résolvent ni n'émulent les fonctions importées, ce qui provoque des exceptions et rend impossible l'utilisation de l'émulation avec certains codes. Code Grafter résout ce problème pour un sous-ensemble de fonctions de l'API Windows en insérant des opcodes et des données pour implémenter un petit sous-ensemble de fonctions Windows importées. Code Grafter cible les fonctions dont l'implémentation est triviale et qui sont généralement associées au décodage de chaînes et au dépaquetage de malwares. Pouvoir utiliser le mode Bochs IDB en particulier avec ce type de code permet le décodage occasionnel de chaînes et le dépaquetage/extraction de charges utiles sans avoir à gérer des problèmes tels que l'anti-rétro-ingénierie, le débogage de sous-processus, etc.
Le fichier function_replacements.c contient des implémentations C compactes de
plusieurs fonctions associées au décodage simple de chaînes et aux routines de dépaquetage
de malwares. Il est fourni à titre de référence.
Après avoir compilé function_replacements.c, les opcodes des fonctions pertinentes ont été
extraits à l'aide de emit_fnbytes_python() de mykutils.py (situé dans
/python/flare du dépôt flare-ida). Les opcodes ont ensuite été ajoutés sous forme de
chaînes Python à une bibliothèque d'implémentations de fonctions dans code_grafter.py
(également dans /python/flare).