summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/mobicore/mclf.c17
-rw-r--r--plugins/mobicore/mclf.h5
-rw-r--r--plugins/mobicore/mobicore.c8
-rw-r--r--plugins/pychrysa/format/elf/elf.c2
-rw-r--r--plugins/ropgadgets/select.c4
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)
{