diff options
| author | Cyrille Bagard <nocbos@gmail.com> | 2012-11-22 23:43:14 (GMT) | 
|---|---|---|
| committer | Cyrille Bagard <nocbos@gmail.com> | 2012-11-22 23:43:14 (GMT) | 
| commit | 9428bf292d066055d168b9bb49fe90c41f2942d1 (patch) | |
| tree | 9d4d75a414f058dc7015401d8fada63ec24fe14b /src/plugins | |
| parent | 3669bdaf8552f53baa5cfb2b0d360959eea61236 (diff) | |
Replaced the text of some registers (this and parameters).
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@289 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/plugins')
| -rw-r--r-- | src/plugins/pglist.c | 30 | ||||
| -rw-r--r-- | src/plugins/pglist.h | 7 | ||||
| -rw-r--r-- | src/plugins/plugin-def.h | 26 | ||||
| -rw-r--r-- | src/plugins/plugin.c | 2 | 
4 files changed, 52 insertions, 13 deletions
| diff --git a/src/plugins/pglist.c b/src/plugins/pglist.c index 3fd2cb0..14e6b48 100644 --- a/src/plugins/pglist.c +++ b/src/plugins/pglist.c @@ -2,7 +2,7 @@  /* OpenIDA - Outil d'analyse de fichiers binaires   * pglist.c - gestion de l'ensemble des greffons   * - * Copyright (C) 2009-2010 Cyrille Bagard + * Copyright (C) 2009-2012 Cyrille Bagard   *   *  This file is part of OpenIDA.   * @@ -33,7 +33,7 @@  #include <config.h> -#include "plugin.h" +#include "plugin-int.h"  #include "../common/extstr.h" @@ -207,7 +207,7 @@ GPluginModule *get_one_plugin_for_action(PluginAction action)  *  Paramètres  : action = fonctionnalité recherchée.                          *  *                count  = nombre de greffons trouvés. [OUT]                   *  *                                                                             * -*  Description : Founit less greffons offrant le service demandé.             * +*  Description : Founit les greffons offrant le service demandé.              *  *                                                                             *  *  Retour      : Liste de greffons correspondants à libérer de la mémoire.    *  *                                                                             * @@ -257,3 +257,27 @@ void add_plugin_to_main_list(GPluginModule *plugin)      list->plugins[list->plugins_count - 1] = plugin;  } + + +/****************************************************************************** +*                                                                             * +*  Paramètres  : binary = binaire chargé en mémoire à traiter.                * +*                action = fonctionnalité recherchée.                          * +*                                                                             * +*  Description : Opère une action donnée sur un binaire défini.               * +*                                                                             * +*  Retour      : -                                                            * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +void run_plugins_on_binary(GLoadedBinary *binary, PluginAction action) +{ +    size_t i;                               /* Boucle de parcours          */ + +    for (i = 0; i < _list.plugins_count; i++) +        if (g_plugin_module_get_action(_list.plugins[i]) & action) +            g_plugin_module_execute_action_on_binary(_list.plugins[i], binary, action); + +} diff --git a/src/plugins/pglist.h b/src/plugins/pglist.h index 36b998e..2804108 100644 --- a/src/plugins/pglist.h +++ b/src/plugins/pglist.h @@ -2,7 +2,7 @@  /* OpenIDA - Outil d'analyse de fichiers binaires   * pglist.h - prototypes pour la gestion de l'ensemble des greffons   * - * Copyright (C) 2009 Cyrille Bagard + * Copyright (C) 2009-2012 Cyrille Bagard   *   *  This file is part of OpenIDA.   * @@ -42,7 +42,10 @@ bool init_all_plugins(GObject *);  GPluginModule *get_one_plugin_for_action(PluginAction);  /* Founit less greffons offrant le service demandé. */ -GPluginModule **get_all_plugins_for_action(PluginAction, size_t *); +GPluginModule **get_all_plugins_for_action(PluginAction, size_t *) __attribute__ ((deprecated)); + +/*Opère une action donnée sur un binaire défini. */ +void run_plugins_on_binary(GLoadedBinary *, PluginAction); diff --git a/src/plugins/plugin-def.h b/src/plugins/plugin-def.h index c1579b2..602b296 100644 --- a/src/plugins/plugin-def.h +++ b/src/plugins/plugin-def.h @@ -43,22 +43,34 @@ typedef enum _PluginType  /* Action(s) menée(s) par le greffon */  typedef enum _PluginAction  { -    PGA_NONE            = (0 << 0),         /* Aucun intérêt               */ +    PGA_NONE                = (0 << 0),     /* Aucun intérêt               */ -    PGA_FORMAT_MATCHER  = (1 << 0),         /* Détection et chargement     */ +    PGA_FORMAT_MATCHER      = (1 << 0),     /* Détection et chargement     */ -    PGA_DISASSEMBLE     = (1 << 1),         /* Désassemblage (non trivial) */ +    PGA_DISASSEMBLE         = (1 << 1),     /* Désassemblage (non trivial) */ -    PGA_DISASS_PROCESS  = (1 << 2),         /* Traitement niveau assembleur*/ -    PGA_CODE_PROCESS    = (1 << 3),         /* Traitement du code existant */ +    PGA_BINARY_DISASSEMBLED = (1 << 2),     /* Désassemblage fini          */ +    PGA_BINARY_LINKED       = (1 << 3),     /* Liaison en place            */ +    PGA_BINARY_BOUNDED      = (1 << 4),     /* Limites de routines définies*/ +    PGA_BINARY_PRINTED      = (1 << 5),     /* Instructions imprimées      */ -    PGA_DEBUGGER_ATTACH = (1 << 4),         /* Activation d'un débogueur   */ -    PGA_DEBUGGER_DETACH = (1 << 5)          /* Désactivation d'un débogueur*/ +    PGA_DISASS_PROCESS      = (1 << 6),     /* Traitement niveau assembleur*/ +    PGA_CODE_PROCESS        = (1 << 7),     /* Traitement du code existant */ + +    PGA_DEBUGGER_ATTACH     = (1 << 8),     /* Activation d'un débogueur   */ +    PGA_DEBUGGER_DETACH     = (1 << 9)      /* Désactivation d'un débogueur*/  } PluginAction; +/* Actions éligibles pour run_plugins_on_binary() */ +#define PGA_BINARY_ACTIONS ( 0                                              \ +                            | PGA_BINARY_DISASSEMBLED | PGA_BINARY_LINKED   \ +                            | PGA_BINARY_BOUNDED | PGA_BINARY_PRINTED       \ +                             ) + +  /* Fournit une indication sur le(s) type(s) du greffon présent. */  typedef PluginType (* get_plugin_type_fc) (void); diff --git a/src/plugins/plugin.c b/src/plugins/plugin.c index 416c647..c6a49c6 100644 --- a/src/plugins/plugin.c +++ b/src/plugins/plugin.c @@ -153,7 +153,7 @@ GPluginModule *g_plugin_module_new(const gchar *filename, GObject *ref)      result->get_action = get_action; -    if (g_plugin_module_get_action(result) & (PGA_DISASSEMBLE | PGA_DISASS_PROCESS | PGA_CODE_PROCESS)) +    if (g_plugin_module_get_action(result) & (PGA_BINARY_ACTIONS | /* FIXME : supprimer le reste */ PGA_DISASSEMBLE | PGA_DISASS_PROCESS | PGA_CODE_PROCESS))      {          if (!g_module_symbol(result->module, "execute_action_on_binary", (gpointer *)&result->exec_on_bin))          { | 
