diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2020-04-21 18:44:33 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2020-04-21 18:44:33 (GMT) |
commit | cd54168f9877ed4ee16ee1e25c72e8338eed7928 (patch) | |
tree | 04dc1a85a28ff8a95eaaa6a0bbd5909ea2dc6397 /plugins/dalvik | |
parent | 3dada5fbc27777217625603905727364a0cc996d (diff) |
Redefined the interface for creating new processors from Python.
Diffstat (limited to 'plugins/dalvik')
-rw-r--r-- | plugins/dalvik/processor.c | 86 | ||||
-rw-r--r-- | plugins/dalvik/v35/processor.c | 29 |
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. * |