summaryrefslogtreecommitdiff
path: root/src/format/format.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/format/format.c')
-rw-r--r--src/format/format.c154
1 files changed, 4 insertions, 150 deletions
diff --git a/src/format/format.c b/src/format/format.c
index b44d8ed..c779947 100644
--- a/src/format/format.c
+++ b/src/format/format.c
@@ -40,16 +40,6 @@
-#ifndef _
-# define _(str) str
-#endif
-
-
-
-
-/* ------------------------ TRAITEMENT INDIVIDUEL DE FORMATS ------------------------ */
-
-
/* Initialise la classe des formats binaires génériques. */
static void g_binary_format_class_init(GBinFormatClass *);
@@ -58,43 +48,6 @@ static void g_binary_format_init(GBinFormat *);
-/* ----------------------- MANIPULATION D'ENSEMBLE DE FORMATS ----------------------- */
-
-
-/* Format d'exécutables enregistré */
-typedef struct _registered_format
-{
- const char *name; /* Désignation du format */
-
- FormatType type; /* Type de format */
-
- format_match_fc match; /* Procédure de reconnaissance */
- format_load_fc load; /* Fonction de chargement */
-
-} registered_format;
-
-
-/* Liste des formats d'exécutables enregistrés */
-static registered_format _formats[FID_COUNT];
-
-
-#define register_format(id, n, t, m, l) \
- do \
- { \
- _formats[id].name = n; \
- _formats[id].type = t; \
- _formats[id].match = m; \
- _formats[id].load = l; \
- } \
- while (0)
-
-
-
-/* ---------------------------------------------------------------------------------- */
-/* TRAITEMENT INDIVIDUEL DE FORMATS */
-/* ---------------------------------------------------------------------------------- */
-
-
/* Indique le type défini pour un format binaire générique. */
G_DEFINE_TYPE(GBinFormat, g_binary_format, G_TYPE_OBJECT);
@@ -149,10 +102,11 @@ static void g_binary_format_init(GBinFormat *format)
* *
******************************************************************************/
-void g_binary_format_set_content(GBinFormat *format, const bin_t *content, off_t length)
+void g_binary_format_set_content(GBinFormat *format, GBinContent *content)
{
- format->content = content;
- format->length = length;
+
+
+ format->content = g_binary_content_get(content, &format->length);
}
@@ -507,103 +461,3 @@ bool g_binary_format_resolve_relative_routine(const GBinFormat *format, const ch
return result;
}
-
-
-
-/* ---------------------------------------------------------------------------------- */
-/* MANIPULATION D'ENSEMBLE DE FORMATS */
-/* ---------------------------------------------------------------------------------- */
-
-
-/******************************************************************************
-* *
-* Paramètres : - *
-* *
-* Description : Procède au chargement des formats binaires reconnus. *
-* *
-* Retour : true pour indiquer un chargement réussi, false sinon. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-bool init_all_formats(void)
-{
- register_format(FID_DEX, _("Dalvik Executable"), FMT_EXEC, dex_is_matching, g_dex_format_new);
- //register_format(FID_DWARF, _("Dwarf"), FMT_DEBUG, dwarf_is_matching, g_dwarf_format_new);
- register_format(FID_ELF, _("ELF"), FMT_EXEC, elf_is_matching, g_elf_format_new);
- register_format(FID_JAVA, _("Java"), FMT_EXEC, java_is_matching, g_java_format_new);
- register_format(FID_PE, _("PE"), FMT_EXEC, pe_is_matching, g_pe_format_new);
-
- return true;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : type = type de format recherché. *
-* filename = fichier d'origine des données initiales. *
-* content = contenu binaire à parcourir. [OUT] *
-* length = taille du contenu en question. [OUT] *
-* *
-* Description : Charge si possible un nouveau format binaire. *
-* *
-* Retour : Adresse du nouveau gestionnaire de format ou NULL si erreur. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GBinFormat *load_new_format(FormatType type, const char *filename, bin_t **content, off_t *length)
-{
- GBinFormat *result; /* Adresse à retourner */
- char *tmp; /* Nom de fichier modifiable */
- GPluginModule **pglist; /* Liste de greffons */
- size_t pgcount; /* Taille de cette liste */
- size_t i; /* Boucle de parcours */
-
- result = NULL;
-
- tmp = strdup(filename);
-
- pgcount = 0;
- pglist = NULL;//get_all_plugins_for_action(PGA_FORMAT_MATCHER, &pgcount);
-
- if (pgcount > 0)
- {
- lnf_rescan:
-
- for (i = 0; i < pgcount; i++)
- switch (0/*g_plugin_module_is_matching(pglist[i], &tmp, content, length)*/)
- {
- case MFA_MATCHED:
- /* FIXME */
- break;
-
- case MFA_RELOAD:
- //goto lnf_rescan;
- break;
-
- default:
- break;
-
- }
-
- free(pglist);
-
- }
-
- if (tmp == NULL)
- free(tmp);
-
- for (i = 0; i < FID_COUNT && result == NULL; i++)
- if (_formats[i].type == type && _formats[i].match(type, *content, *length))
- {
- log_variadic_message(LMT_INFO, _("%s is matching..."), _formats[i].name);
- result = _formats[i].load(*content, *length);
- }
-
- return result;
-
-}