summaryrefslogtreecommitdiff
path: root/plugins/dalvik
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2020-04-21 18:44:33 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2020-04-21 18:44:33 (GMT)
commitcd54168f9877ed4ee16ee1e25c72e8338eed7928 (patch)
tree04dc1a85a28ff8a95eaaa6a0bbd5909ea2dc6397 /plugins/dalvik
parent3dada5fbc27777217625603905727364a0cc996d (diff)
Redefined the interface for creating new processors from Python.
Diffstat (limited to 'plugins/dalvik')
-rw-r--r--plugins/dalvik/processor.c86
-rw-r--r--plugins/dalvik/v35/processor.c29
2 files changed, 109 insertions, 6 deletions
diff --git a/plugins/dalvik/processor.c b/plugins/dalvik/processor.c
index 38f245c..a1a211e 100644
--- a/plugins/dalvik/processor.c
+++ b/plugins/dalvik/processor.c
@@ -50,6 +50,15 @@ static void g_dalvik_processor_dispose(GDalvikProcessor *);
/* Procède à la libération totale de la mémoire. */
static void g_dalvik_processor_finalize(GDalvikProcessor *);
+/* Fournit la taille de l'espace mémoire d'une architecture. */
+static MemoryDataSize g_dalvik_processor_get_memory_size(const GDalvikProcessor *);
+
+/* Fournit la taille min. des instructions d'une architecture. */
+static MemoryDataSize g_dalvik_processor_get_instruction_min_size(const GDalvikProcessor *);
+
+/* Indique si l'architecture possède un espace virtuel ou non. */
+static bool g_dalvik_processor_has_virtual_space(const GDalvikProcessor *);
+
/* Fournit un contexte pour l'exécution du processeur Dalvik. */
static GDalvikContext *g_dalvik_processor_get_context(const GDalvikProcessor *);
@@ -83,10 +92,9 @@ static void g_dalvik_processor_class_init(GDalvikProcessorClass *klass)
proc = G_ARCH_PROCESSOR_CLASS(klass);
- proc->endianness = SRE_LITTLE;
- proc->memsize = MDS_32_BITS;
- proc->inssize = MDS_16_BITS;
- proc->virt_space = false;
+ proc->get_memsize = (get_processor_memsize_fc)g_dalvik_processor_get_memory_size;
+ proc->get_inssize = (get_processor_inssize_fc)g_dalvik_processor_get_instruction_min_size;
+ proc->has_vspace = (has_processor_vspace_fc)g_dalvik_processor_has_virtual_space;
proc->get_ctx = (get_processor_context_fc)g_dalvik_processor_get_context;
@@ -107,6 +115,7 @@ static void g_dalvik_processor_class_init(GDalvikProcessorClass *klass)
static void g_dalvik_processor_init(GDalvikProcessor *proc)
{
+ G_ARCH_PROCESSOR(proc)->endianness = SRE_LITTLE;
}
@@ -151,6 +160,75 @@ static void g_dalvik_processor_finalize(GDalvikProcessor *proc)
/******************************************************************************
* *
+* Paramètres : proc = processeur d'architecture à consulter. *
+* *
+* Description : Fournit la taille de l'espace mémoire d'une architecture. *
+* *
+* Retour : Taille de l'espace mémoire. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static MemoryDataSize g_dalvik_processor_get_memory_size(const GDalvikProcessor *proc)
+{
+ MemoryDataSize result; /* Taille à retourner */
+
+ result = MDS_32_BITS;
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : proc = processeur d'architecture à consulter. *
+* *
+* Description : Fournit la taille min. des instructions d'une architecture. *
+* *
+* Retour : Taille d'encodage des instructions. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static MemoryDataSize g_dalvik_processor_get_instruction_min_size(const GDalvikProcessor *proc)
+{
+ MemoryDataSize result; /* Taille à retourner */
+
+ result = MDS_16_BITS;
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : proc = processeur d'architecture à consulter. *
+* *
+* Description : Indique si l'architecture possède un espace virtuel ou non. *
+* *
+* Retour : true si un espace virtuel existe, false sinon. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static bool g_dalvik_processor_has_virtual_space(const GDalvikProcessor *proc)
+{
+ bool result; /* Indication à retourner */
+
+ result = false;
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : proc = architecture, spectatrice ici. *
* *
* Description : Fournit un contexte pour l'exécution du processeur Dalvik. *
diff --git a/plugins/dalvik/v35/processor.c b/plugins/dalvik/v35/processor.c
index 0865ee7..7e79e46 100644
--- a/plugins/dalvik/v35/processor.c
+++ b/plugins/dalvik/v35/processor.c
@@ -67,6 +67,9 @@ static void g_dalvik35_processor_finalize(GDalvik35Processor *);
/* Fournit la désignation interne du processeur d'architecture. */
static char *g_dalvik35_processor_get_key(const GDalvik35Processor *);
+/* Fournit le nom humain de l'architecture visée. */
+static char *g_dalvik35_processor_get_desc(const GDalvik35Processor *);
+
/* Décode une instruction dans un flux de données. */
static GArchInstruction *g_dalvik35_processor_disassemble(const GArchProcessor *, GDalvikContext *, const GBinContent *, vmpa2t *, GExeFormat *);
@@ -100,9 +103,8 @@ static void g_dalvik35_processor_class_init(GDalvik35ProcessorClass *klass)
proc = G_ARCH_PROCESSOR_CLASS(klass);
- proc->desc = "Dalvik Virtual Machine v35";
-
proc->get_key = (get_processor_key_fc)g_dalvik35_processor_get_key;
+ proc->get_desc = (get_processor_desc_fc)g_dalvik35_processor_get_desc;
proc->disassemble = (disass_instr_fc)g_dalvik35_processor_disassemble;
@@ -213,6 +215,29 @@ static char *g_dalvik35_processor_get_key(const GDalvik35Processor *proc)
/******************************************************************************
* *
+* Paramètres : proc = processeur d'architecture à consulter. *
+* *
+* Description : Fournit le nom humain de l'architecture visée. *
+* *
+* Retour : Désignation humaine associée au processeur. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static char *g_dalvik35_processor_get_desc(const GDalvik35Processor *proc)
+{
+ char *result; /* Désignation à renvoyer */
+
+ result = strdup("Dalvik Virtual Machine v35");
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : proc = architecture visée par la procédure. *
* ctx = contexte lié à l'exécution du processeur. *
* content = flux de données à analyser. *