diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/mobicore/mclf.c | 17 | ||||
-rw-r--r-- | plugins/mobicore/mclf.h | 5 | ||||
-rw-r--r-- | plugins/mobicore/mobicore.c | 8 | ||||
-rw-r--r-- | plugins/pychrysa/format/elf/elf.c | 2 | ||||
-rw-r--r-- | plugins/ropgadgets/select.c | 4 |
5 files changed, 20 insertions, 16 deletions
diff --git a/plugins/mobicore/mclf.c b/plugins/mobicore/mclf.c index 245508f..829a488 100644 --- a/plugins/mobicore/mclf.c +++ b/plugins/mobicore/mclf.c @@ -55,26 +55,30 @@ static void g_mclf_format_refine_portions(const GMCLFFormat *, GBinPortion *); /****************************************************************************** * * * Paramètres : content = contenu binaire à parcourir. * +* parent = éventuel format exécutable déjà chargé. * * * * Description : Indique si le format peut être pris en charge ici. * * * -* Retour : true si la réponse est positive, false sinon. * +* Retour : Désignation du format reconnu ou NULL si aucun. * * * * Remarques : - * * * ******************************************************************************/ -bool mclf_is_matching(GBinContent *content) +const char *mclf_is_matching(GBinContent *content, GExeFormat *parent) { - bool result; /* Bilan à faire connaître */ + const char *result; /* Format détecté à renvoyer */ vmpa2t addr; /* Tête de lecture initiale */ + bool status; /* Bilan des accès mémoire */ char magic[4]; /* Idenfiant standard */ init_vmpa(&addr, 0, VMPA_NO_VIRTUAL); - result = g_binary_content_get_raw(content, &addr, 4, (bin_t *)magic); + status = g_binary_content_get_raw(content, &addr, 4, (bin_t *)magic); - result &= (memcmp(magic, MC_SERVICE_HEADER_MAGIC_STR, 4) == 0); + status &= (memcmp(magic, MC_SERVICE_HEADER_MAGIC_STR, 4) == 0); + + result = status ? "mclf" : NULL; return result; @@ -130,6 +134,7 @@ static void g_mclf_format_init(GMCLFFormat *format) /****************************************************************************** * * * Paramètres : content = contenu binaire à parcourir. * +* parent = éventuel format exécutable déjà chargé. * * * * Description : Prend en charge un nouveau format MCLF. * * * @@ -139,7 +144,7 @@ static void g_mclf_format_init(GMCLFFormat *format) * * ******************************************************************************/ -GBinFormat *g_mclf_format_new(GBinContent *content) +GBinFormat *g_mclf_format_new(GBinContent *content, GExeFormat *parent) { GMCLFFormat *result; /* Structure à retourner */ diff --git a/plugins/mobicore/mclf.h b/plugins/mobicore/mclf.h index c2752b8..5ac0926 100644 --- a/plugins/mobicore/mclf.h +++ b/plugins/mobicore/mclf.h @@ -30,6 +30,7 @@ #include <sys/types.h> +#include <format/executable.h> #include <format/format.h> @@ -50,13 +51,13 @@ typedef struct _GMCLFFormatClass GMCLFFormatClass; /* Indique si le format peut être pris en charge ici. */ -bool mclf_is_matching(GBinContent *); +const char *mclf_is_matching(GBinContent *, GExeFormat *); /* Indique le type défini pour un format d'exécutable MCLF. */ GType g_mclf_format_get_type(void); /* Prend en charge un nouveau format MCLF. */ -GBinFormat *g_mclf_format_new(GBinContent *); +GBinFormat *g_mclf_format_new(GBinContent *, GExeFormat *); diff --git a/plugins/mobicore/mobicore.c b/plugins/mobicore/mobicore.c index 15bc0a1..087297b 100644 --- a/plugins/mobicore/mobicore.c +++ b/plugins/mobicore/mobicore.c @@ -54,9 +54,9 @@ G_MODULE_EXPORT bool chrysalide_plugin_init(GPluginModule *plugin, GObject *ref) { bool result; /* Bilan à retourner */ - printf("Loaded !\n"); + result &= register_format_matcher(mclf_is_matching); - result = register_format_type("mclf", "MobiCore Load Format", mclf_is_matching, g_mclf_format_new); + result = register_format_loader("mclf", "MobiCore Load Format", g_mclf_format_new); return result; @@ -78,8 +78,6 @@ G_MODULE_EXPORT bool chrysalide_plugin_init(GPluginModule *plugin, GObject *ref) G_MODULE_EXPORT void chrysalide_plugin_exit(GPluginModule *plugin, GObject *ref) { - - printf("Unloaded !\n"); - + /* TODO */ } diff --git a/plugins/pychrysa/format/elf/elf.c b/plugins/pychrysa/format/elf/elf.c index 87988ee..a292c91 100644 --- a/plugins/pychrysa/format/elf/elf.c +++ b/plugins/pychrysa/format/elf/elf.c @@ -70,7 +70,7 @@ static PyObject *py_elf_format_new(PyTypeObject *type, PyObject *args, PyObject if (!ret) return NULL; content = G_BIN_CONTENT(pygobject_get(content_obj)); - format = g_elf_format_new(content); + format = g_elf_format_new(content, NULL); result = pygobject_new(G_OBJECT(format)); diff --git a/plugins/ropgadgets/select.c b/plugins/ropgadgets/select.c index 826682c..514b6ca 100644 --- a/plugins/ropgadgets/select.c +++ b/plugins/ropgadgets/select.c @@ -1337,7 +1337,7 @@ static GBinFormat *load_external_format_for_rop_gadgets(GObject *ref) /* Récupération du format de fichier associé */ - target = find_matching_format(content); + target = find_matching_format(content, NULL); desc = get_binary_format_name(target); if (desc == NULL) @@ -1347,7 +1347,7 @@ static GBinFormat *load_external_format_for_rop_gadgets(GObject *ref) goto leffrg_error; } - result = load_new_named_format(target, content); + result = load_new_named_format(target, content, NULL); if (result == NULL) { |