summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2016-01-12 22:10:09 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2016-01-12 22:10:09 (GMT)
commit2ddb5c26af896b10517a89abf0c9498c598b7697 (patch)
treeecc094327051f2b7ec5846879e31c5c13d7a9d97 /src
parent9dad150aedfae6423f1166665d47674df51014d2 (diff)
Disabled the old way to disassemble instructions.
Diffstat (limited to 'src')
-rw-r--r--src/arch/Makefile.am1
-rw-r--r--src/arch/artificial.c309
-rw-r--r--src/arch/artificial.h71
-rw-r--r--src/arch/processor.c5
4 files changed, 4 insertions, 382 deletions
diff --git a/src/arch/Makefile.am b/src/arch/Makefile.am
index aab7ec8..204ffbd 100644
--- a/src/arch/Makefile.am
+++ b/src/arch/Makefile.am
@@ -3,7 +3,6 @@ noinst_LTLIBRARIES = libarch.la
libarch_la_SOURCES = \
archbase.h archbase.c \
- artificial.h artificial.c \
context-int.h \
context.h context.c \
immediate.h immediate.c \
diff --git a/src/arch/artificial.c b/src/arch/artificial.c
deleted file mode 100644
index a6fea56..0000000
--- a/src/arch/artificial.c
+++ /dev/null
@@ -1,309 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * artificial.c - instructions pures vues de l'esprit
- *
- * Copyright (C) 2009-2012 Cyrille Bagard
- *
- * This file is part of Chrysalide.
- *
- * 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 Foobar. If not, see <http://www.gnu.org/licenses/>.
- */
-
-
-#include "artificial.h"
-
-
-#include <string.h>
-
-
-#include "immediate.h"
-#include "instruction-int.h"
-
-
-
-/* ------------------------- INSTRUCTION INCONNUE / DONNEES ------------------------- */
-
-
-/* Définition générique d'une instruction d'architecture inconnue (instance) */
-struct _GDbInstruction
-{
- GArchInstruction parent; /* A laisser en premier */
-
-#ifdef DEBUG
- bool skipped; /* Donnée traitée */
-#endif
-
-};
-
-/* Définition générique d'une instruction d'architecture inconnue (classe) */
-struct _GDbInstructionClass
-{
- GArchInstructionClass parent; /* A laisser en premier */
-
-};
-
-
-/* Initialise la classe générique des opérandes. */
-static void g_db_instruction_class_init(GDbInstructionClass *);
-
-/* Initialise une instance d'opérande d'architecture. */
-static void g_db_instruction_init(GDbInstruction *);
-
-/* Supprime toutes les références externes. */
-static void g_db_instruction_dispose(GDbInstruction *);
-
-/* Procède à la libération totale de la mémoire. */
-static void g_db_instruction_finalize(GDbInstruction *);
-
-/* Reconstruit le cache complet d'une désignation d'instruction. */
-static void g_db_instruction_build_keyword(const GDbInstruction *, AsmSyntax);
-
-/* Informe sur une éventuelle référence à une autre instruction. */
-static InstructionLinkType g_db_instruction_get_link(const GDbInstruction *, vmpa_t *);
-
-
-
-/* ---------------------------------------------------------------------------------- */
-/* INSTRUCTION INCONNUE / DONNEES */
-/* ---------------------------------------------------------------------------------- */
-
-
-/* Indique le type défini pour une instruction inconnue d'architecture. */
-G_DEFINE_TYPE(GDbInstruction, g_db_instruction, G_TYPE_ARCH_INSTRUCTION);
-
-
-/******************************************************************************
-* *
-* Paramètres : klass = classe à initialiser. *
-* *
-* Description : Initialise la classe générique des opérandes. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_db_instruction_class_init(GDbInstructionClass *klass)
-{
- GObjectClass *object; /* Autre version de la classe */
- GArchInstructionClass *instr; /* Encore une autre vision... */
-
- object = G_OBJECT_CLASS(klass);
-
- object->dispose = (GObjectFinalizeFunc/* ! */)g_db_instruction_dispose;
- object->finalize = (GObjectFinalizeFunc)g_db_instruction_finalize;
-
- instr = G_ARCH_INSTRUCTION_CLASS(klass);
-
- instr->build_key = (build_instruction_keyword_fc)g_db_instruction_build_keyword;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : instr = instance à initialiser. *
-* *
-* Description : Initialise une instance d'instruction d'architecture. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_db_instruction_init(GDbInstruction *instr)
-{
- GArchInstruction *parent; /* Instance parente */
-
- parent = G_ARCH_INSTRUCTION(instr);
-
- parent->get_link = (get_instruction_link_fc)g_db_instruction_get_link;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : instr = instance d'objet GLib à traiter. *
-* *
-* Description : Supprime toutes les références externes. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_db_instruction_dispose(GDbInstruction *instr)
-{
- G_OBJECT_CLASS(g_db_instruction_parent_class)->dispose(G_OBJECT(instr));
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : instr = instance d'objet GLib à traiter. *
-* *
-* Description : Procède à la libération totale de la mémoire. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_db_instruction_finalize(GDbInstruction *instr)
-{
- G_OBJECT_CLASS(g_db_instruction_parent_class)->finalize(G_OBJECT(instr));
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : data = flux de données à analyser. *
-* pos = position courante dans ce flux. [OUT] *
-* end = limite des données à analyser. *
-* addr = adresse, virtuelle ou physique, de l'instruction. *
-* proc = architecture ciblée par le désassemblage. *
-* *
-* Description : Crée une instruction de type 'db' à partir de données. *
-* *
-* Retour : Instruction mise en place. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GArchInstruction *g_db_instruction_new_from_data(const bin_t *data, vmpa2t *address, off_t end, const GArchProcessor *proc)
-{
- GArchInstruction *result; /* Instruction à retourner */
- off_t pos;
- off_t old;
- GArchOperand *operand; /* Octet non décodé à afficher */
-
- result = g_object_new(G_TYPE_DB_INSTRUCTION, NULL);
-
- pos = get_phy_addr(address);
- old = pos;
-
- operand = g_imm_operand_new_from_data_old(g_arch_processor_get_instruction_size(proc),
- data, &pos, end,
- g_arch_processor_get_endianness(proc));
-
- address->physical += (pos - old);
-
- /* FIXME : essayer une taille plus petite en cas d'échec (on peut être en bout de binaire) */
-
- if (operand == NULL) goto gdinfd_error;
-
- g_imm_operand_pad(G_IMM_OPERAND(operand), true);
-
- g_arch_instruction_attach_extra_operand(result, operand);
-
- return result;
-
- gdinfd_error:
-
- g_object_unref(G_OBJECT(result));
-
- return NULL;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : instr = instruction à traiter. *
-* format = format du binaire manipulé. *
-* syntax = type de représentation demandée. *
-* *
-* Description : Reconstruit le cache complet d'une désignation d'instruction.*
-* *
-* Retour : Mot clef de bas niveau. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_db_instruction_build_keyword(const GDbInstruction *instr, AsmSyntax syntax)
-{
- G_ARCH_INSTRUCTION(instr)->cached_keyword = strdup("db");
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : instr = instruction à consulter. *
-* addr = eventuelle adresse associée à faire connaître. [OUT] *
-* *
-* Description : Informe sur une éventuelle référence à une autre instruction.*
-* *
-* Retour : Type de lien trouvé ou ILT_NONE si aucun. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static InstructionLinkType g_db_instruction_get_link(const GDbInstruction *instr, vmpa_t *addr)
-{
- return ILT_NONE;
-
-}
-
-
-#ifdef DEBUG
-
-/******************************************************************************
-* *
-* Paramètres : instr = instruction à mettre à jour. *
-* *
-* Description : Marque une donnée comme ayant été considérée au sein du code.*
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void g_db_instruction_mark_as_skipped(GDbInstruction *instr)
-{
- instr->skipped = true;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : instr = instruction à consulter. *
-* *
-* Description : Indique si une donnée fait partie du code exécutable. *
-* *
-* Retour : true si la donnée est intégrée dans le code, false sinon. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-bool g_db_instruction_is_skipped(const GDbInstruction *instr)
-{
- return instr->skipped;
-
-}
-
-#endif
diff --git a/src/arch/artificial.h b/src/arch/artificial.h
deleted file mode 100644
index 65eb4fe..0000000
--- a/src/arch/artificial.h
+++ /dev/null
@@ -1,71 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * artificial.h - prototypes pour les instructions pures vues de l'esprit
- *
- * Copyright (C) 2009-2012 Cyrille Bagard
- *
- * This file is part of Chrysalide.
- *
- * 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 Foobar. If not, see <http://www.gnu.org/licenses/>.
- */
-
-
-#ifndef _ARCH_ARTIFICIAL_H
-#define _ARCH_ARTIFICIAL_H
-
-
-#include <glib-object.h>
-
-
-#include "archbase.h"
-#include "processor.h"
-#include "vmpa.h"
-
-
-
-/* ------------------------- INSTRUCTION INCONNUE / DONNEES ------------------------- */
-
-
-#define G_TYPE_DB_INSTRUCTION g_db_instruction_get_type()
-#define G_DB_INSTRUCTION(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_db_instruction_get_type(), GDbInstruction))
-#define G_IS_DB_INSTRUCTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_db_instruction_get_type()))
-#define G_DB_INSTRUCTION_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE((inst), g_db_instruction_get_type(), GDbInstructionIface))
-
-
-/* Définition générique d'une instruction d'architecture inconnue (instance) */
-typedef struct _GDbInstruction GDbInstruction;
-
-/* Définition générique d'une instruction d'architecture inconnue (classe) */
-typedef struct _GDbInstructionClass GDbInstructionClass;
-
-
-/* Indique le type défini pour une instruction inconnue d'architecture. */
-GType g_db_instruction_get_type(void);
-
-/* Crée une instruction de type 'db' à partir de données. */
-GArchInstruction *g_db_instruction_new_from_data(const bin_t *, vmpa2t *, off_t, const GArchProcessor *);
-
-#ifdef DEBUG
-
-/* Marque une donnée comme ayant été considérée au sein du code. */
-void g_db_instruction_mark_as_skipped(GDbInstruction *);
-
-/* Indique si une donnée fait partie du code exécutable. */
-bool g_db_instruction_is_skipped(const GDbInstruction *);
-
-#endif
-
-
-
-#endif /* _ARCH_ARTIFICIAL_H */
diff --git a/src/arch/processor.c b/src/arch/processor.c
index cb00a2d..91f9821 100644
--- a/src/arch/processor.c
+++ b/src/arch/processor.c
@@ -45,7 +45,6 @@
-#include "artificial.h"
@@ -250,6 +249,7 @@ MemoryDataSize g_arch_processor_get_instruction_size(const GArchProcessor *proc)
GArchInstruction *g_arch_processor_decode_instruction(const GArchProcessor *proc, GProcContext *ctx, const bin_t *data, off_t *pos, off_t end, vmpa_t addr, GBinFormat *format)
{
+#if 0
GArchInstruction *result; /* Instruction à renvoyer */
off_t old_pos; /* Sauvegarde de la position */
bool skipped; /* Données prise en compte ? */
@@ -276,6 +276,9 @@ GArchInstruction *g_arch_processor_decode_instruction(const GArchProcessor *proc
//g_arch_instruction_set_location(result, old_pos, *pos - old_pos, addr);
return result;
+#endif
+
+ return NULL;
}