diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2012-11-05 19:45:08 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2012-11-05 19:45:08 (GMT) |
commit | c35d5d4ce62b812ec0aa4a5ebbacb84cd0901d53 (patch) | |
tree | ca0262ce4f0a24bdfbc1b9a4ffa1bbb202d47820 /plugins/dexresolver/context.c | |
parent | f5df6496fa50927d3d274c939a888afde652b7ad (diff) |
Removed the old interface for rendering lines.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@278 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'plugins/dexresolver/context.c')
-rw-r--r-- | plugins/dexresolver/context.c | 321 |
1 files changed, 0 insertions, 321 deletions
diff --git a/plugins/dexresolver/context.c b/plugins/dexresolver/context.c deleted file mode 100644 index b63ccf3..0000000 --- a/plugins/dexresolver/context.c +++ /dev/null @@ -1,321 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * context.h - prototypes pour les instances d'actions du présent greffon - * - * Copyright (C) 2010 Cyrille Bagard - * - * This file is part of OpenIDA. - * - * OpenIDA is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * OpenIDA is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - - -#include "context.h" - - -#include <analysis/line_code.h> -#include <arch/dalvik/operand.h> -#include <glibext/delayed-int.h> -#include <plugins/context-int.h> - - -#include "operand.h" - - - -/* ---------------------------- REMPLACEMENT D'OPERANDES ---------------------------- */ - - -#define G_TYPE_DEX_RESOLVER_WORK g_dex_resolver_work_get_type() -#define G_DEX_RESOLVER_WORK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_dex_resolver_work_get_type(), GDelayedDisassembly)) -#define G_IS_DEX_RESOLVER_WORK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_dex_resolver_work_get_type())) -#define G_DEX_RESOLVER_WORK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), G_TYPE_DEX_RESOLVER_WORK, GDelayedDisassemblyClass)) -#define G_IS_DEX_RESOLVER_WORK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_DEX_RESOLVER_WORK)) -#define G_DEX_RESOLVER_WORK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_DEX_RESOLVER_WORK, GDelayedDisassemblyClass)) - - -/* Instance du greffon pour OpenIDA (instance) */ -typedef struct _GDexResolverWork -{ - GDelayedWork parent; /* A laisser en premier */ - - GLoadedBinary *binary; /* Destinataire final */ - -} GDexResolverWork; - - -/* Instance du greffon pour OpenIDA (classe) */ -typedef struct _GDexResolverWorkClass -{ - GDelayedWorkClass parent; /* A laisser en premier */ - -} GDexResolverWorkClass; - - -/* Indique le type défini pour les tâches de résolutions différées. */ -static GType g_dex_resolver_work_get_type(void); - -/* Initialise la classe des résolutions d'opérandes différées. */ -static void g_dex_resolver_work_class_init(GDexResolverWorkClass *); - -/* Initialise une tâche de résolution d'opérandes différée. */ -static void g_dex_resolver_work_init(GDexResolverWork *); - -/* Crée une tâche de résolution d'opérandes différée. */ -static GDexResolverWork *g_dex_resolver_work_new(GLoadedBinary *); - -/* Assure la résolution d'opérandes en différé. */ -static void g_dex_resolver_work_process(GDexResolverWork *, GtkExtStatusBar *); - - - -/* -------------------------- TACHE DIFFEREE DANS LE TEMPS -------------------------- */ -/* -------------------------- TACHE DIFFEREE DANS LE TEMPS -------------------------- */ - - - -/* Instance du greffon pour OpenIDA (instance) */ -struct _GDexResolverContext -{ - GPluginContext parent; /* A laisser en premier */ - -}; - - -/* Instance du greffon pour OpenIDA (classe) */ -struct _GDexResolverContextClass -{ - GPluginContextClass parent; /* A laisser en premier */ - -}; - - - -/* Initialise la classe des instances de greffon. */ -static void g_dex_resolver_context_class_init(GDexResolverContextClass *); - -/* Initialise une instance d'instance de greffon. */ -static void g_dex_resolver_context_init(GDexResolverContext *); - - - - - - -/* ---------------------------------------------------------------------------------- */ -/* REMPLACEMENT D'OPERANDES */ -/* ---------------------------------------------------------------------------------- */ - - -/* Indique le type défini pour les tâches de résolutions différées. */ -G_DEFINE_TYPE(GDexResolverWork, g_dex_resolver_work, G_TYPE_DELAYED_WORK); - - -/****************************************************************************** -* * -* Paramètres : klass = classe à initialiser. * -* * -* Description : Initialise la classe des résolutions d'opérandes différées. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_dex_resolver_work_class_init(GDexResolverWorkClass *klass) -{ - -} - - -/****************************************************************************** -* * -* Paramètres : disass = instance à initialiser. * -* * -* Description : Initialise une tâche de résolution d'opérandes différée. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_dex_resolver_work_init(GDexResolverWork *disass) -{ - G_DELAYED_WORK(disass)->run = (run_task_fc)g_dex_resolver_work_process; - -} - - -/****************************************************************************** -* * -* Paramètres : binary = binaire chargé en attente des résultats. * -* * -* Description : Crée une tâche de résolution d'opérandes différée. * -* * -* Retour : Tâche créée. * -* * -* Remarques : - * -* * -******************************************************************************/ - -static GDexResolverWork *g_dex_resolver_work_new(GLoadedBinary *binary) -{ - GDexResolverWork *result; /* Tâche à retourner */ - - result = g_object_new(G_TYPE_DEX_RESOLVER_WORK, NULL); - - result->binary = binary; - - return result; - -} - - -/****************************************************************************** -* * -* Paramètres : work = analyse à mener. * -* statusbar = barre de statut à tenir informée. * -* * -* Description : Assure la résolution d'opérandes en différé. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_dex_resolver_work_process(GDexResolverWork *work, GtkExtStatusBar *statusbar) -{ - GDexFormat *format; /* Format du binaire utilisé */ - GRenderingLine *lines; /* Lignes désassemblées */ - GRenderingLine *iter; /* Boucle de parcours */ - GArchInstruction *instr; /* Instruction à ausculter */ - size_t count; /* Quantité d'opérandes */ - size_t i; /* Boucle de parcours */ - const GArchOperand *op; /* Opérande à analyser */ - GArchOperand *new; /* Nouvel opérande à afficher */ - - format = G_DEX_FORMAT(g_loaded_binary_get_format(work->binary)); - - lines = g_loaded_binary_get_lines(work->binary); - - for (iter = lines; - iter != NULL; - iter = g_rendering_line_get_next_iter(lines, iter, NULL)) - { - /* On ne traite que du code ici ! */ - if (!G_IS_CODE_LINE(iter)) continue; - - instr = g_code_line_get_instruction(G_CODE_LINE(iter)); - count = g_arch_instruction_count_operands(instr); - - /* FIXME : l'opérande recherchée est à position fixe ! */ - for (i = 0; i < count; i++) - { - op = g_arch_instruction_get_operand(instr, i); - - if (G_IS_DALVIK_POOL_OPERAND(op)) - { - new = g_dalvik_hpool_operand_new(format, G_DALVIK_POOL_OPERAND(op)); - - if (new != NULL) - g_arch_instruction_replace_operand(instr, new, op); - - } - - } - - } - -} - - - -/* ---------------------------------------------------------------------------------- */ -/* REMPLACEMENT D'OPERANDES */ -/* REMPLACEMENT D'OPERANDES */ -/* ---------------------------------------------------------------------------------- */ - - -/* Indique le type défini pour une instance de greffon. */ -G_DEFINE_TYPE(GDexResolverContext, g_dex_resolver_context, G_TYPE_PLUGIN_CONTEXT); - - -/****************************************************************************** -* * -* Paramètres : klass = classe à initialiser. * -* * -* Description : Initialise la classe des instances de greffon. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_dex_resolver_context_class_init(GDexResolverContextClass *klass) -{ - -} - - -/****************************************************************************** -* * -* Paramètres : context = instance à initialiser. * -* * -* Description : Initialise une instance d'instance de greffon. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_dex_resolver_context_init(GDexResolverContext *context) -{ - -} - - -/****************************************************************************** -* * -* Paramètres : binary = contenu binaire chargé à traiter. * -* * -* Description : Lance l'exécution d'une action du greffon. * -* * -* Retour : Instance d'exécution du greffon. * -* * -* Remarques : - * -* * -******************************************************************************/ - -GPluginContext *g_dex_resolver_context_new(GLoadedBinary *binary) -{ - GPluginContext *result; /* Bilan d'exécution à renvoyer*/ - GDexResolverWork *work; /* Tâche de parcours de lignes */ - - result = g_object_new(G_TYPE_DEX_RESOLVER_CONTEXT, NULL); - - work = g_dex_resolver_work_new(binary); - - g_signal_connect(work, "work-completed", G_CALLBACK(g_object_unref), NULL); - - g_work_queue_schedule_work(get_work_queue(), G_DELAYED_WORK(work)); - - return result; - -} |