summaryrefslogtreecommitdiff
path: root/src/format
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2015-02-03 23:21:49 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2015-02-03 23:21:49 (GMT)
commit425860b441b21e4aca7bf2473be26b0fe1e756e2 (patch)
tree341a0fc8b370d76566f3e332c344ffae5c065916 /src/format
parent5511e355e7810f06bd610b79bcc94402c88d7ec9 (diff)
Removed all references to binary parts (GBinPart) and updated the code.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@465 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/format')
-rw-r--r--src/format/Makefile.am1
-rw-r--r--src/format/dex/class.c4
-rw-r--r--src/format/dex/class.h2
-rwxr-xr-xsrc/format/dex/dex.c7
-rw-r--r--src/format/dex/method.c4
-rw-r--r--src/format/dex/method.h4
-rw-r--r--src/format/elf/elf.c102
-rw-r--r--src/format/exe_format-int.h100
-rw-r--r--src/format/exe_format.c485
-rw-r--r--src/format/exe_format.h152
-rw-r--r--src/format/executable-int.h4
-rw-r--r--src/format/executable.c27
-rw-r--r--src/format/executable.h4
-rwxr-xr-xsrc/format/java/java.c50
-rw-r--r--src/format/part.c416
-rw-r--r--src/format/part.h97
-rw-r--r--src/format/pe/pe.c7
17 files changed, 16 insertions, 1450 deletions
diff --git a/src/format/Makefile.am b/src/format/Makefile.am
index 1c06de9..b0fda82 100644
--- a/src/format/Makefile.am
+++ b/src/format/Makefile.am
@@ -6,7 +6,6 @@ libformat_la_SOURCES = \
executable.h executable.c \
format-int.h \
format.h format.c \
- part.h part.c \
symbol.h symbol.c
# libformat_la_SOURCES = \
diff --git a/src/format/dex/class.c b/src/format/dex/class.c
index 19c004a..b866cd7 100644
--- a/src/format/dex/class.c
+++ b/src/format/dex/class.c
@@ -320,7 +320,7 @@ GDexMethod *g_dex_class_get_method(const GDexClass *class, bool virtual, size_t
* Remarques : - *
* *
******************************************************************************/
-
+#if 0
GBinPart **g_dex_class_get_parts(const GDexClass *class, GBinPart **parts, size_t *count)
{
size_t i; /* Boucle de parcours */
@@ -347,7 +347,7 @@ GBinPart **g_dex_class_get_parts(const GDexClass *class, GBinPart **parts, size_
return parts;
}
-
+#endif
diff --git a/src/format/dex/class.h b/src/format/dex/class.h
index 0eea7b4..8125b91 100644
--- a/src/format/dex/class.h
+++ b/src/format/dex/class.h
@@ -61,7 +61,7 @@ size_t g_dex_class_count_methods(const GDexClass *, bool);
GDexMethod *g_dex_class_get_method(const GDexClass *, bool, size_t);
/* Fournit les références aux zones binaires à analyser. */
-GBinPart **g_dex_class_get_parts(const GDexClass *, GBinPart **, size_t *);
+//GBinPart **g_dex_class_get_parts(const GDexClass *, GBinPart **, size_t *);
/* Retrouve si possible la méthode associée à une adresse. */
GDexMethod *g_dex_class_find_method_by_address(const GDexClass *, vmpa_t);
diff --git a/src/format/dex/dex.c b/src/format/dex/dex.c
index 94ec34a..f66f056 100755
--- a/src/format/dex/dex.c
+++ b/src/format/dex/dex.c
@@ -55,7 +55,7 @@ static void g_dex_format_decompile(const GDexFormat *, GCodeBuffer *, const char
static FormatTargetMachine g_dex_format_get_target_machine(const GDexFormat *);
/* Fournit les références aux zones binaires à analyser. */
-static GBinPart **g_dex_format_get_parts(const GDexFormat *, size_t *);
+//static GBinPart **g_dex_format_get_parts(const GDexFormat *, size_t *);
/* Fournit la position correspondant à une adresse virtuelle. */
static bool g_dex_format_translate_address_into_offset(const GDexFormat *, vmpa_t, off_t *);
@@ -139,7 +139,6 @@ static void g_dex_format_init(GDexFormat *format)
exe_format = G_EXE_FORMAT(format);
exe_format->get_machine = (get_target_machine_fc)g_dex_format_get_target_machine;
- exe_format->get_parts = (get_parts_fc)g_dex_format_get_parts;
exe_format->translate_addr = (translate_addr_fc)g_dex_format_translate_address_into_offset;
exe_format->translate_off = (translate_off_fc)g_dex_format_translate_offset_into_address;
@@ -362,7 +361,7 @@ static FormatTargetMachine g_dex_format_get_target_machine(const GDexFormat *for
* Remarques : - *
* *
******************************************************************************/
-
+#if 0
static GBinPart **g_dex_format_get_parts(const GDexFormat *format, size_t *count)
{
GBinPart **result; /* Tableau à retourner */
@@ -377,7 +376,7 @@ static GBinPart **g_dex_format_get_parts(const GDexFormat *format, size_t *count
return result;
}
-
+#endif
/******************************************************************************
* *
diff --git a/src/format/dex/method.c b/src/format/dex/method.c
index 22e7039..c721cea 100644
--- a/src/format/dex/method.c
+++ b/src/format/dex/method.c
@@ -254,7 +254,7 @@ GBinRoutine *g_dex_method_get_routine(const GDexMethod *method)
* Remarques : - *
* *
******************************************************************************/
-
+#if 0
GBinPart *g_dex_method_as_part(const GDexMethod *method)
{
GBinPart *result; /* Instance à retourner */
@@ -272,7 +272,7 @@ GBinPart *g_dex_method_as_part(const GDexMethod *method)
return result;
}
-
+#endif
/******************************************************************************
* *
diff --git a/src/format/dex/method.h b/src/format/dex/method.h
index 472e42d..79e3077 100644
--- a/src/format/dex/method.h
+++ b/src/format/dex/method.h
@@ -32,8 +32,6 @@
#include "dex_def.h"
-#include "../part.h"
-
#define G_TYPE_DEX_METHOD (g_dex_method_get_type())
#define G_DEX_METHOD(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_DEX_METHOD, GDexMethod))
@@ -81,7 +79,7 @@ const code_item *g_dex_method_get_dex_body(const GDexMethod *);
GBinRoutine *g_dex_method_get_routine(const GDexMethod *);
/* Fournit la zone binaire correspondant à la méthode. */
-GBinPart *g_dex_method_as_part(const GDexMethod *);
+//GBinPart *g_dex_method_as_part(const GDexMethod *);
/* Indique la position de la méthode au sein du binaire. */
off_t g_dex_method_get_offset(const GDexMethod *);
diff --git a/src/format/elf/elf.c b/src/format/elf/elf.c
index 00af26d..b659dd7 100644
--- a/src/format/elf/elf.c
+++ b/src/format/elf/elf.c
@@ -62,9 +62,6 @@ static FormatTargetMachine g_elf_format_get_target_machine(const GElfFormat *);
/* Etend la définition des portions au sein d'un binaire. */
static void g_elf_format_refine_portions(const GElfFormat *, GBinPortion *);
-/* Fournit les références aux zones binaires à analyser. */
-static GBinPart **g_elf_format_get_parts(const GElfFormat *, size_t *);
-
/* Fournit la position correspondant à une adresse virtuelle. */
static bool g_elf_format_translate_address_into_offset(const GElfFormat *, vmpa_t, off_t *);
@@ -143,7 +140,6 @@ static void g_elf_format_init(GElfFormat *format)
exe_format->get_machine = (get_target_machine_fc)g_elf_format_get_target_machine;
exe_format->refine_portions = (refine_portions_fc)g_elf_format_refine_portions;
- exe_format->get_parts = (get_parts_fc)g_elf_format_get_parts;
exe_format->translate_addr = (translate_addr_fc)g_elf_format_translate_address_into_offset;
exe_format->translate_off = (translate_off_fc)g_elf_format_translate_offset_into_address;
@@ -393,104 +389,6 @@ static void g_elf_format_refine_portions(const GElfFormat *format, GBinPortion *
/******************************************************************************
* *
-* Paramètres : format = informations chargées à consulter. *
-* count = quantité de zones listées. [OUT] *
-* *
-* Description : Fournit les références aux zones binaires à analyser. *
-* *
-* Retour : Zones binaires à analyser. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static GBinPart **g_elf_format_get_parts(const GElfFormat *format, size_t *count)
-{
- GBinPart **result; /* Tableau à retourner */
- uint16_t i; /* Boucle de parcours */
- elf_shdr strings; /* Section des descriptions */
- bool has_strings; /* Section trouvée ? */
- elf_shdr section; /* En-tête de section ELF */
- GBinPart *part; /* Partie à intégrer à la liste*/
- const char *name; /* Nom trouvé ou NULL */
- off_t offset; /* Début de part de programme */
- elf_phdr phdr; /* En-tête de programme ELF */
-
- result = NULL;
- *count = 0;
-
- has_strings = find_elf_section_by_index(format, ELF_HDR(format, format->header, e_shstrndx), &strings);
-
- /* Première tentative : les sections */
-
- for (i = 0; i < ELF_HDR(format, format->header, e_shnum); i++)
- {
- if (!find_elf_section_by_index(format, i, &section))
- continue;
-
- if (ELF_SHDR(format, section, sh_flags) & SHF_EXECINSTR)
- {
- part = g_binary_part_new();
-
- if (has_strings)
- {
- name = extract_name_from_elf_string_section(format, &strings,
- ELF_SHDR(format, section, sh_name));
-
- if (name != NULL)
- g_binary_part_set_name(part, name);
-
- }
-
- g_binary_part_set_values(part,
- ELF_SHDR(format, section, sh_offset),
- ELF_SHDR(format, section, sh_size),
- ELF_SHDR(format, section, sh_addr));
-
- result = (GBinPart **)realloc(result, ++(*count) * sizeof(GBinPart *));
- result[*count - 1] = part;
-
- }
-
- }
-
- /* En désespoir de cause, on se rabbat sur les parties de programme directement */
-
- if (*count == 0)
- for (i = 0; i < ELF_HDR(format, format->header, e_phnum); i++)
- {
- offset = ELF_HDR(format, format->header, e_phoff)
- + ELF_HDR(format, format->header, e_phentsize) * i;
-
- if (!read_elf_program_header(format, &offset, &phdr))
- continue;
-
- if (ELF_PHDR(format, phdr, p_flags) & PF_X)
- {
- part = g_binary_part_new();
-
- /* TODO : nom */
-
- g_binary_part_set_values(part,
- ELF_PHDR(format, phdr, p_offset),
- ELF_PHDR(format, phdr, p_filesz),
- ELF_PHDR(format, phdr, p_vaddr));
-
- result = (GBinPart **)realloc(result, ++(*count) * sizeof(GBinPart *));
- result[*count - 1] = part;
-
- }
-
- }
-
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
* Paramètres : format = description de l'exécutable à consulter. *
* addr = adresse virtuelle à retrouver. *
* pos = position correspondante. [OUT] *
diff --git a/src/format/exe_format-int.h b/src/format/exe_format-int.h
deleted file mode 100644
index 868e86c..0000000
--- a/src/format/exe_format-int.h
+++ /dev/null
@@ -1,100 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * exe_format-int.h - prototypes utiles aux formats d'exécutables
- *
- * Copyright (C) 2008-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 _FORMAT_EXE_FORMAT_INT_H
-#define _FORMAT_EXE_FORMAT_INT_H
-
-
-#include "exe_format.h"
-
-
-
-/* ------------------------ MANIPULATION DES PARTIES DE CODE ------------------------ */
-
-
-/* Description d'une partie binaire */
-struct _bin_part
-{
- char *name; /* Désignation humaine */
-
- off_t offset; /* Position physique */
- off_t size; /* Taille de la partie */
- uint64_t voffset; /* Adresse virtuelle éventuelle*/
-
-};
-
-
-
-
-
-
-/* Fournit l'adresse mémoire du point d'entrée du programme. */
-typedef uint64_t (* get_entry_point_fc) (const exe_format *);
-
-/* Indique le type d'architecture visée par le format. */
-typedef FormatTargetMachine (* get_target_machine_fc) (const exe_format *);
-
-/* Fournit les références aux zones de code à analyser. */
-typedef bin_part ** (* get_def_parts_fc) (const exe_format *, size_t *);
-
-/* Recherche une section donnée au sein de binaire. */
-typedef bool (* find_section_fc) (const exe_format *, const char *, off_t *, off_t *, uint64_t *);
-
-/* Récupère tous les symboles présents dans le contenu binaire. */
-typedef size_t (* get_symbols_fc) (const exe_format *, char ***, SymbolType **, uint64_t **);
-
-/* Récupère tous les symboles présents dans le contenu binaire. */
-typedef size_t (* get_resolved_fc) (const exe_format *, char ***, ResolvedType **, uint64_t **);
-
-/* Recherche le symbole correspondant à une adresse. */
-typedef bool (* resolve_symbol_fc) (const exe_format *, char **, SymbolType *, vmpa_t *);
-
-/* Fournit le prototype de toutes les routines détectées. */
-typedef GBinRoutine ** (* get_all_routines_fc) (const exe_format *, size_t *);
-
-
-/* Support générique d'un format d'exécutable */
-struct _exe_format
-{
- const uint8_t *content; /* Contenu binaire à étudier */
- off_t length; /* Taille de ce contenu */
-
- get_entry_point_fc get_entry_point; /* Obtention du point d'entrée */
- get_target_machine_fc get_target_machine; /* Architecture ciblée */
- get_def_parts_fc get_def_parts; /* Liste des parties de code */
- find_section_fc find_section; /* Recherche d'une section */
- get_symbols_fc get_symbols; /* Liste des symboles présents */
- get_resolved_fc get_resolved; /* Liste des éléments présents */
- resolve_symbol_fc resolve_symbol; /* Recherche de symboles */
- get_all_routines_fc get_all_routines; /* Liste de routines détectées */
-
-};
-
-
-#define EXE_FORMAT(f) ((exe_format *)f)
-
-
-
-
-
-#endif /* _FORMAT_EXE_FORMAT_INT_H */
diff --git a/src/format/exe_format.c b/src/format/exe_format.c
deleted file mode 100644
index 14f1541..0000000
--- a/src/format/exe_format.c
+++ /dev/null
@@ -1,485 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * exe_format.h - support des formats d'exécutables
- *
- * Copyright (C) 2008-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 "exe_format.h"
-
-
-#include <malloc.h>
-#include <string.h>
-
-
-#include "exe_format-int.h"
-#include "elf/e_elf.h"
-#include "java/e_java.h"
-#include "pe/e_pe.h"
-#include "../panel/log.h"
-
-
-
-#define _(str) str
-
-
-
-
-/* ------------------------ DETECTION DE FORMATS EXECUTABLES ------------------------ */
-
-
-/* Format d'exécutables enregistré */
-typedef struct _registered_exe_format
-{
- const char *name; /* Désignation du format */
-
- exe_match_fc match; /* Procédure de reconnaissance */
- exe_load_fc load; /* Fonction de chargement */
-
-} registered_exe_format;
-
-
-/* Liste des formats d'exécutables enregistrés */
-static registered_exe_format *exe_formats = NULL;
-static size_t exe_formats_count = 0;
-
-
-/* Enregistre la disponibilité d'un nouveau format exécutable. */
-void register_exe_format(const char *, exe_match_fc, exe_load_fc);
-
-
-
-
-/* ---------------------------------------------------------------------------------- */
-/* MANIPULATION DES PARTIES DE CODE */
-/* ---------------------------------------------------------------------------------- */
-
-
-/******************************************************************************
-* *
-* Paramètres : - *
-* *
-* Description : Crée une description de partie de code vierge. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-bin_part *create_bin_part(void)
-{
- bin_part *result; /* Structure à renvoyer */
-
- result = (bin_part *)calloc(1, sizeof(bin_part));
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : part = description de partie à mettre à jour. *
-* name = nom à donner à la partie. *
-* *
-* Description : Attribue une description humaine à une partie de code. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void set_bin_part_name(bin_part *part, const char *name)
-{
- if (part->name != NULL) free(part->name);
-
- part->name = strdup(name);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : part = description de partie à mettre à jour. *
-* offset = position de la section à conserver. *
-* size = taille de la section à conserver. *
-* voffset = adresse virtuelle de la section à conserver. *
-* *
-* Description : Définit les valeurs utiles d'une partie de code. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void set_bin_part_values(bin_part *part, off_t offset, off_t size, uint64_t voffset)
-{
- part->offset = offset;
- part->size = size;
- part->voffset = voffset;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : part = description de partie à mettre à jour. *
-* offset = position de la section à donner. [OUT] *
-* size = taille de la section à donner. [OUT] *
-* voffset = adresse virtuelle de la section à donner. [OUT] *
-* *
-* Description : Fournit les valeurs utiles d'une partie de code. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void get_bin_part_values(const bin_part *part, off_t *offset, off_t *size, uint64_t *voffset)
-{
- if (offset != NULL) *offset = part->offset;
- if (size != NULL) *size = part->size;
- if (voffset != NULL) *voffset = part->voffset;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : part = description de partie à effacer. *
-* *
-* Description : Supprime de la mémoire une description de partie de code. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void delete_bin_part(bin_part *part)
-{
- if (part->name != NULL) free(part->name);
-
- free(part);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : a = premières informations à consulter. *
-* b = secondes informations à consulter. *
-* *
-* Description : Etablit la comparaison entre deux blocs binaires. *
-* *
-* Retour : Bilan : -1 (a < b), 0 (a == b) ou 1 (a > b). *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-int compare_bin_parts(const bin_part **a, const bin_part **b)
-{
- int result; /* Bilan à renvoyer */
-
- if ((*a)->offset < (*b)->offset) result = -1;
- else if((*a)->offset > (*b)->offset) result = 1;
- else result = 0;
-
- return result;
-
-}
-
-
-
-
-
-
-
-
-
-
-
-/* ---------------------------------------------------------------------------------- */
-/* DETECTION DE FORMATS EXECUTABLES */
-/* ---------------------------------------------------------------------------------- */
-
-
-/******************************************************************************
-* *
-* Paramètres : - *
-* *
-* Description : Procède au chargement des formats d'exécutables reconnus. *
-* *
-* Retour : true pour indiquer un chargement réussi, false sinon. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-bool init_all_exe_formats(void)
-{
- register_exe_format(_("ELF"), elf_is_matching, load_elf);
- register_exe_format(_("Java"), java_is_matching, load_java);
- register_exe_format(_("Portable Executable"), pe_is_matching, load_pe);
-
- return true;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : name = désignation humaine associée. *
-* match = procédure de reconnaissance fournie. *
-* load = fonction de chargement fournie. *
-* *
-* Description : Enregistre la disponibilité d'un nouveau format exécutable. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void register_exe_format(const char *name, exe_match_fc match, exe_load_fc load)
-{
- exe_formats = (registered_exe_format *)realloc(exe_formats,
- ++exe_formats_count * sizeof(registered_exe_format));
-
- exe_formats[exe_formats_count - 1].name = name;
-
- exe_formats[exe_formats_count - 1].match = match;
- exe_formats[exe_formats_count - 1].load = load;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : content = contenu binaire à parcourir. *
-* length = taille du contenu en question. *
-* *
-* Description : Charge si possible un nouvel exécutable binaire. *
-* *
-* Retour : Adresse du nouveau gestionnaire de format ou NULL si erreur. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-exe_format *load_new_exe_format(const uint8_t *content, off_t length)
-{
- exe_format *result; /* Adresse à retourner */
- size_t i; /* Boucle de parcours */
-
- result = NULL;
-
- for (i = 0; i < exe_formats_count && result == NULL; i++)
- if (exe_formats[i].match(content, length))
- {
- log_variadic_message(LMT_INFO, _("%s is matching..."), exe_formats[i].name);
-
- result = exe_formats[i].load(content, length);
-
- }
-
- return result;
-
-}
-
-
-
-
-
-
-
-/* ---------------------------------------------------------------------------------- */
-/* MANIPULATION DES PARTIES DE CODE */
-/* ---------------------------------------------------------------------------------- */
-
-
-
-
-/******************************************************************************
-* *
-* Paramètres : format = description de l'exécutable à consulter. *
-* target = nom de la section recherchée. *
-* length = taille du contenu à fournir. [OUT] *
-* *
-* Description : Fournit une référence vers le contenu binaire analysé. *
-* *
-* Retour : Adresse du tampon contenant le contenu du binaire. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-const uint8_t *get_exe_content(const exe_format *format, off_t *length)
-{
- if (length != NULL) *length = format->length;
-
- return format->content;
-
-}
-
-
-
-
-/******************************************************************************
-* *
-* Paramètres : format = informations chargées à consulter. *
-* *
-* Description : Indique le type d'architecture visée par le format. *
-* *
-* Retour : Identifiant de l'architecture ciblée par le format. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-FormatTargetMachine get_exe_target_machine(const exe_format *format)
-{
- return format->get_target_machine(format);
-
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-/******************************************************************************
-* *
-* Paramètres : format = description de l'exécutable à consulter. *
-* target = nom de la section recherchée. *
-* offset = position de la section trouvée. [OUT] *
-* size = taille de la section trouvée. [OUT] *
-* voffset = adresse virtuelle de la section trouvée. [OUT] *
-* *
-* Description : Recherche une section donnée au sein de binaire. *
-* *
-* Retour : Bilan de l'opération. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-bool find_exe_section(const exe_format *format, const char *target, off_t *offset, off_t *size, uint64_t *voffset)
-{
- return format->find_section(format, target, offset, size, voffset);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : format = informations chargées à consulter. *
-* labels = liste des commentaires à insérer. [OUT] *
-* types = type des symboles listés. [OUT] *
-* offsets = liste des indices des commentaires. [OUT] *
-* *
-* Description : Récupère tous les symboles présents dans le contenu binaire. *
-* *
-* Retour : Nombre d'éléments mis en place. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-size_t get_exe_symbols(const exe_format *format, char ***labels, SymbolType **types, uint64_t **offsets)
-{
- return format->get_symbols(format, labels, types, offsets);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : format = informations chargées à consulter. *
-* labels = liste des commentaires à insérer. [OUT] *
-* types = type des symboles listés. [OUT] *
-* offsets = liste des indices des commentaires. [OUT] *
-* *
-* Description : Récupère tous les éléments identifiées dans le binaire. *
-* *
-* Retour : Nombre d'éléments mis en place. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-size_t get_exe_resolved_items(const exe_format *format, char ***labels, ResolvedType **types, uint64_t **offsets)
-{
- return format->get_resolved(format, labels, types, offsets);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : format = informations chargées à consulter. *
-* label = étiquette du symbole si trouvé. [OUT] *
-* type = type du symbole trouvé. [OUT] *
-* address = adresse à cibler, puis décallage final. [OUT] *
-* *
-* Description : Recherche le symbole correspondant à une adresse. *
-* *
-* Retour : true si l'opération a été un succès, false sinon. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-bool resolve_exe_symbol(const exe_format *format, char **label, SymbolType *type, vmpa_t *address)
-{
- return format->resolve_symbol(format, label, type, address);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : format = informations chargées à consulter. *
-* count = taille du tableau créé. [OUT] *
-* *
-* Description : Fournit le prototype de toutes les routines détectées. *
-* *
-* Retour : Tableau créé ou NULL si aucun symbole de routine trouvé. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GBinRoutine **get_all_exe_routines(const exe_format *format, size_t *count)
-{
- return format->get_all_routines(format, count);
-
-}
diff --git a/src/format/exe_format.h b/src/format/exe_format.h
deleted file mode 100644
index b4cecb3..0000000
--- a/src/format/exe_format.h
+++ /dev/null
@@ -1,152 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * exe_format.h - prototypes pour le support des formats d'exécutables
- *
- * Copyright (C) 2008-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 _FORMAT_EXE_FORMAT_H
-#define _FORMAT_EXE_FORMAT_H
-
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <sys/types.h>
-
-
-#include "../analysis/routine.h"
-
-#include "symbol.h"
-
-
-/* ------------------------ MANIPULATION DES PARTIES DE CODE ------------------------ */
-
-
-/* Description d'une partie binaire */
-typedef struct _bin_part bin_part;
-
-
-/* Crée une description de partie de code vierge. */
-bin_part *create_bin_part(void);
-
-/* Attribue une description humaine à une partie de code. */
-void set_bin_part_name(bin_part *, const char *);
-
-/* Définit les valeurs utiles d'une partie de code. */
-void set_bin_part_values(bin_part *, off_t, off_t, uint64_t);
-
-/* Fournit les valeurs utiles d'une partie de code. */
-void get_bin_part_values(const bin_part *, off_t *, off_t *, uint64_t *);
-
-/* Supprime de la mémoire une description de partie de code. */
-void delete_bin_part(bin_part *);
-
-/* Etablit la comparaison entre deux blocs binaires. */
-int compare_bin_parts(const bin_part **, const bin_part **);
-
-
-
-
-/* FIXME !!!!!!!!!!!! */
-
-/* Support générique d'un format d'exécutable */
-typedef struct _exe_format exe_format;
-
-
-
-/* ------------------------ DETECTION DE FORMATS EXECUTABLES ------------------------ */
-
-
-/* Indication à propos du support d'un format */
-typedef bool (* exe_match_fc) (const uint8_t *, off_t);
-
-/* Méthode de chargement d'un format */
-typedef exe_format * (* exe_load_fc) (const uint8_t *, off_t);
-
-
-/* Procède au chargement des formats d'exécutables reconnus. */
-bool init_all_exe_formats(void);
-
-/* Charge si possible un nouvel exécutable binaire. */
-exe_format *load_new_exe_format(const uint8_t *, off_t);
-
-
-
-
-#if 0
-/* Architectures de destination des formats */
-typedef enum _FormatTargetMachine
-{
- FTM_JVM, /* Java Virtual Machine */
- FTM_MIPS, /* Mips 32 ou 64 bits */
- FTM_386, /* Intel 80386 */
-
- FTM_COUNT
-
-} FormatTargetMachine;
-
-
-
-/* Types de symbole */
-typedef enum _SymbolType
-{
- STP_SECTION, /* Simple morceau de code */
- STP_STRING /* Chaîne de caractères */
-
-} SymbolType;
-#endif
-
-
-/* Types de symbole */
-typedef enum _ResolvedType
-{
- RTP_SECTION, /* Simple morceau de code */
- RTP_STRING /* Chaîne de caractères */
-
-} ResolvedType;
-
-
-/* Fournit une référence vers le contenu binaire analysé. */
-const uint8_t *get_exe_content(const exe_format *, off_t *);
-
-
-
-/* Indique le type d'architecture visée par le format. */
-FormatTargetMachine get_exe_target_machine(const exe_format *);
-
-
-
-/* Recherche une section donnée au sein de binaire. */
-bool find_exe_section(const exe_format *, const char *, off_t *, off_t *, uint64_t *);
-
-/* Récupère tous les symboles présents dans le contenu binaire. */
-size_t get_exe_symbols(const exe_format *, char ***, SymbolType **, uint64_t **);
-
-/* Récupère tous les éléments identifiées dans le binaire. */
-size_t get_exe_resolved_items(const exe_format *, char ***, ResolvedType **, uint64_t **);
-
-/* Recherche le symbole correspondant à une adresse. */
-bool resolve_exe_symbol(const exe_format *, char **, SymbolType *, vmpa_t *);
-
-/* Fournit le prototype de toutes les routines détectées. */
-GBinRoutine **get_all_exe_routines(const exe_format *, size_t *);
-
-
-
-#endif /* _FORMAT_EXE_FORMAT_H */
diff --git a/src/format/executable-int.h b/src/format/executable-int.h
index 51a2625..119c251 100644
--- a/src/format/executable-int.h
+++ b/src/format/executable-int.h
@@ -38,9 +38,6 @@ typedef FormatTargetMachine (* get_target_machine_fc) (const GExeFormat *);
/* Etend la définition des portions au sein d'un binaire. */
typedef void (* refine_portions_fc) (const GExeFormat *, GBinPortion *);
-/* Fournit les références aux zones de code à analyser. */
-typedef GBinPart ** (* get_parts_fc) (const GExeFormat *, size_t *);
-
/* Fournit la position correspondant à une adresse virtuelle. */
typedef bool (* translate_addr_fc) (const GExeFormat *, vmpa_t, off_t *);
@@ -57,7 +54,6 @@ struct _GExeFormat
get_target_machine_fc get_machine; /* Architecture ciblée */
refine_portions_fc refine_portions; /* Décrit les portions binaires*/
- get_parts_fc get_parts; /* Liste des parties binaires */
translate_addr_fc translate_addr; /* Correspondance addr -> pos */
translate_off_fc translate_off; /* Correspondance pos -> addr */
diff --git a/src/format/executable.c b/src/format/executable.c
index db846e2..c1a0a7c 100644
--- a/src/format/executable.c
+++ b/src/format/executable.c
@@ -24,11 +24,12 @@
#include "executable.h"
-#include "executable-int.h"
-#include "format.h"
+#include <malloc.h>
+#include <stdlib.h>
-#include <malloc.h>
+#include "executable-int.h"
+#include "format.h"
@@ -255,26 +256,6 @@ mrange_t *g_exe_format_get_x_ranges(GExeFormat *format, size_t *count)
/******************************************************************************
* *
-* Paramètres : format = informations chargées à consulter. *
-* count = quantité de zones listées. [OUT] *
-* *
-* Description : Fournit les références aux zones binaires à analyser. *
-* *
-* Retour : Zones binaires à analyser. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GBinPart **g_exe_format_get_parts(const GExeFormat *format, size_t *count)
-{
- return format->get_parts(format, count);
-
-}
-
-
-/******************************************************************************
-* *
* Paramètres : format = description de l'exécutable à consulter. *
* addr = adresse virtuelle à retrouver. *
* pos = position correspondante. [OUT] *
diff --git a/src/format/executable.h b/src/format/executable.h
index 1a3febf..4dc2ddd 100644
--- a/src/format/executable.h
+++ b/src/format/executable.h
@@ -28,7 +28,6 @@
#include <glib-object.h>
-#include "part.h"
#include "../glibext/gbinportion.h"
@@ -81,9 +80,6 @@ GBinPortion **g_exe_format_get_portions_at_level(GExeFormat *, unsigned int, siz
/* Fournit les espaces mémoires des portions exécutables. */
mrange_t *g_exe_format_get_x_ranges(GExeFormat *format, size_t *count);
-/* Fournit les références aux zones binaires à analyser. */
-GBinPart **g_exe_format_get_parts(const GExeFormat *, size_t *) __attribute__ ((deprecated));
-
/* Fournit la position correspondant à une adresse virtuelle. */
bool g_exe_format_translate_address_into_offset(const GExeFormat *, vmpa_t, off_t *);
diff --git a/src/format/java/java.c b/src/format/java/java.c
index 3235711..16c9fb7 100755
--- a/src/format/java/java.c
+++ b/src/format/java/java.c
@@ -48,9 +48,6 @@ static void g_java_format_init(GJavaFormat *);
/* Indique le type d'architecture visée par le format. */
static FormatTargetMachine g_java_format_get_target_machine(const GJavaFormat *);
-/* Fournit les références aux zones binaires à analyser. */
-static GBinPart **g_java_format_get_parts(const GJavaFormat *, size_t *);
-
/* Fournit la position correspondant à une adresse virtuelle. */
static bool g_java_format_translate_address_into_offset(const GJavaFormat *, vmpa_t, off_t *);
@@ -128,7 +125,6 @@ static void g_java_format_init(GJavaFormat *format)
exe_format = G_EXE_FORMAT(format);
exe_format->get_machine = (get_target_machine_fc)g_java_format_get_target_machine;
- exe_format->get_parts = (get_parts_fc)g_java_format_get_parts;
exe_format->translate_addr = (translate_addr_fc)g_java_format_translate_address_into_offset;
exe_format->translate_off = (translate_off_fc)g_java_format_translate_offset_into_address;
@@ -217,52 +213,6 @@ static FormatTargetMachine g_java_format_get_target_machine(const GJavaFormat *f
/******************************************************************************
* *
-* Paramètres : format = informations chargées à consulter. *
-* count = quantité de zones listées. [OUT] *
-* *
-* Description : Fournit les références aux zones binaires à analyser. *
-* *
-* Retour : Zones binaires à analyser. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static GBinPart **g_java_format_get_parts(const GJavaFormat *format, size_t *count)
-{
- GBinPart **result; /* Tableau à retourner */
- uint16_t i; /* Boucle de parcours */
- off_t offset; /* Position physique */
- off_t size; /* Taille de la partie */
- GBinPart *part; /* Partie à intégrer à la liste*/
-
- result = NULL;
- *count = 0;
- /*
- for (i = 0; i < format->header.methods_count; i++)
- if (find_java_method_code_part(&format->header.methods[i], &offset, &size))
- {
- part = g_binary_part_new();
-
- g_binary_part_set_name(part, "name");
-
- g_binary_part_set_values(part, offset, size, offset);
-
- result = (GBinPart **)realloc(result, ++(*count) * sizeof(GBinPart *));
- result[*count - 1] = part;
-
- }
-
- }
- */
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
* Paramètres : format = description de l'exécutable à consulter. *
* addr = adresse virtuelle à retrouver. *
* pos = position correspondante. [OUT] *
diff --git a/src/format/part.c b/src/format/part.c
deleted file mode 100644
index c79c176..0000000
--- a/src/format/part.c
+++ /dev/null
@@ -1,416 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * part.h - manipulation des parties de code
- *
- * 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 "part.h"
-
-
-#include <malloc.h>
-#include <stdlib.h>
-#include <string.h>
-
-
-
-/* Bloc de données binaires quelconques (instance) */
-struct _GBinPart
-{
- GObject parent; /* A laisser en premier */
-
- char *name; /* Désignation humaine */
-
- off_t offset; /* Position physique */
- off_t size; /* Taille de la partie */
- vmpa_t addr; /* Adresse associée */
-
-#ifdef DEBUG
- unsigned int valid; /* Instructions reconnues */
- unsigned int db; /* Instructions non traduites */
-#endif
-
-};
-
-/* Bloc de données binaires quelconques (classe) */
-struct _GBinPartClass
-{
- GObjectClass parent; /* A laisser en premier */
-
-};
-
-
-/* Initialise la classe des blocs de données binaires. */
-static void g_binary_part_class_init(GBinPartClass *);
-
-/* Initialise une instance de bloc de données binaires. */
-static void g_binary_part_init(GBinPart *);
-
-
-
-/* Indique le type défini par la GLib pour les blocs de doonées. */
-G_DEFINE_TYPE(GBinPart, g_binary_part, G_TYPE_OBJECT);
-
-
-/******************************************************************************
-* *
-* Paramètres : klass = classe à initialiser. *
-* *
-* Description : Initialise la classe des blocs de données binaires. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_binary_part_class_init(GBinPartClass *klass)
-{
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : line = instance à initialiser. *
-* *
-* Description : Initialise une instance de bloc de données binaires. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_binary_part_init(GBinPart *line)
-{
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : - *
-* *
-* Description : Crée une description de partie de code vierge. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GBinPart *g_binary_part_new(void)
-{
- GBinPart *result; /* Structure à retourner */
-
- result = g_object_new(G_TYPE_BIN_PART, NULL);
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : src = partie de code à copier. *
-* *
-* Description : Crée une description de partie de code à partir d'une autre. *
-* *
-* Retour : Partie de code copiée. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GBinPart *g_binary_part_dump(const GBinPart *src)
-{
- GBinPart *result; /* Structure à retourner */
-
- result = g_object_new(G_TYPE_BIN_PART, NULL);
-
- result->name = (src->name != NULL ? strdup(src->name) : NULL);
-
- result->offset = result->offset;
- result->size = result->size;
- result->addr = result->addr;
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : node = noeud XML contenant les données à charger. *
-* *
-* Description : Crée une description de partie de code vierge à partir d'XML.*
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GBinPart *g_binary_part_load_from_xml(xmlNodePtr node)
-{
- GBinPart *result; /* Structure à retourner */
- char *value; /* Propriété lue depuis le XML */
-
- result = g_binary_part_new();
-
- result->name = qck_get_node_prop_value(node, "name");
- if (result->name == NULL) goto gbplfx_error;
-
- value = qck_get_node_prop_value(node, "offset");
- if (value == NULL) goto gbplfx_error;
-
- result->offset = atoi(value);
- free(value);
-
- value = qck_get_node_prop_value(node, "size");
- if (value == NULL) goto gbplfx_error;
-
- result->size = atoi(value);
- free(value);
-
- return result;
-
- gbplfx_error:
-
- g_object_unref(G_OBJECT(result));
-
- return NULL;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : part = description de partie à sauvegarder. *
-* xdoc = structure XML chargée. *
-* parent = noeud XML où rattacher le futur nouveau noeud. *
-* *
-* Description : Enregistre les informations d'une partie de code dans du XML.*
-* *
-* Retour : Bilan de l'opération. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-bool g_binary_part_save_to_xml(const GBinPart *part, xmlDocPtr xdoc, xmlNodePtr parent)
-{
- bool result; /* Bilan à retourner */
- xmlNodePtr node; /* Nouveau noeud créé */
-
- result = true;
-
- node = add_node_to_node(xdoc, parent, "Part");
- if (node == NULL) return false;
-
- result = _add_string_attribute_to_node(node, "name", part->name);
- result &= add_long_attribute_to_node(node, "offset", part->offset);
- result &= add_long_attribute_to_node(node, "size", part->size);
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : part = description de partie à mettre à jour. *
-* name = nom à donner à la partie. *
-* *
-* Description : Attribue une description humaine à une partie de code. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void g_binary_part_set_name(GBinPart *part, const char *name)
-{
- if (part->name != NULL) free(part->name);
-
- part->name = strdup(name);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : part = description de partie à mettre à jour. *
-* *
-* Description : Fournit la description attribuée à une partie de code. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-const char *g_binary_part_get_name(const GBinPart *part)
-{
- return part->name;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : part = description de partie à mettre à jour. *
-* offset = position de la section à conserver. *
-* size = taille de la section à conserver. *
-* addr = adresse de la section à conserver. *
-* *
-* Description : Définit les valeurs utiles d'une partie de code. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void g_binary_part_set_values(GBinPart *part, off_t offset, off_t size, vmpa_t addr)
-{
- part->offset = offset;
- part->size = size;
- part->addr = addr;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : part = description de partie à mettre à jour. *
-* addr = adresse de la section à conserver. *
-* *
-* Description : Définit l'adresse virtuelle d'une partie de code. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void g_binary_part_set_address(GBinPart *part, vmpa_t addr)
-{
- part->addr = addr;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : part = description de partie à consulter. *
-* offset = position de la section à donner ou NULL. [OUT] *
-* size = taille de la section à donner ou NULL. [OUT] *
-* addr = adresse de la section à donner ou NULL. [OUT] *
-* *
-* Description : Fournit les valeurs utiles d'une partie de code. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void g_binary_part_get_values(const GBinPart *part, off_t *offset, off_t *size, vmpa_t *addr)
-{
- if (offset != NULL) *offset = part->offset;
- if (size != NULL) *size = part->size;
- if (addr != NULL) *addr = part->addr;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : a = premières informations à consulter. *
-* b = secondes informations à consulter. *
-* *
-* Description : Etablit la comparaison entre deux blocs binaires. *
-* *
-* Retour : Bilan : -1 (a < b), 0 (a == b) ou 1 (a > b). *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-int g_binary_part_compare(const GBinPart **a, const GBinPart **b)
-{
- int result; /* Bilan à renvoyer */
-
- if ((*a)->offset < (*b)->offset) result = -1;
- else if((*a)->offset > (*b)->offset) result = 1;
- else result = 0;
-
- return result;
-
-}
-
-#ifdef DEBUG
-
-/******************************************************************************
-* *
-* Paramètres : part = description de partie à mettre à jour. *
-* valid = quantité d'instructions décodées pour cette partie. *
-* db = quantité d'instructions non traduites ici. *
-* *
-* Description : Mémorise un bilan de désassemblage. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void g_binary_part_set_checkup(GBinPart *part, unsigned int valid, unsigned int db)
-{
- part->valid = valid;
- part->db = db;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : part = description de partie à mettre à jour. *
-* valid = quantité d'instructions décodées ici. [OUT] *
-* db = quantité d'instructions non traduites ici. [OUT] *
-* *
-* Description : Mémorise un bilan de désassemblage. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void g_binary_part_get_checkup(const GBinPart *part, unsigned int *valid, unsigned int *db)
-{
- *valid = part->valid;
- *db = part->db;
-
-}
-
-#endif
diff --git a/src/format/part.h b/src/format/part.h
deleted file mode 100644
index e45f234..0000000
--- a/src/format/part.h
+++ /dev/null
@@ -1,97 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * part.h - prototypes pour la manipulation des parties de code
- *
- * 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 _FORMAT_PART_H
-#define _FORMAT_PART_H
-
-
-#include <glib-object.h>
-#include <sys/types.h>
-
-
-#include "../common/xml.h"
-#include "../arch/archbase.h"
-
-
-
-#define G_TYPE_BIN_PART (g_binary_part_get_type())
-#define G_BIN_PART(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_BIN_PART, GBinPart))
-#define G_IS_BIN_PART(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), G_TYPE_BIN_PART))
-#define G_BIN_PART_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), G_TYPE_BIN_PART, GBinPartClass))
-#define G_IS_BIN_PART_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_BIN_PART))
-#define G_BIN_PART_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_BIN_PART, GBinPartClass))
-
-
-/* Bloc de données binaires quelconques (instance) */
-typedef struct _GBinPart GBinPart;
-
-/* Bloc de données binaires quelconques (classe) */
-typedef struct _GBinPartClass GBinPartClass;
-
-
-/* Indique le type défini par la GLib pour les blocs de doonées. */
-GType g_binary_part_get_type(void);
-
-/* Crée une description de partie de code vierge. */
-GBinPart *g_binary_part_new(void);
-
-/* Crée une description de partie de code à partir d'une autre. */
-GBinPart *g_binary_part_dump(const GBinPart *);
-
-/* Crée une description de partie de code vierge à partir d'XML. */
-GBinPart *g_binary_part_load_from_xml(xmlNodePtr);
-
-/* Enregistre les informations d'une partie de code dans du XML. */
-bool g_binary_part_save_to_xml(const GBinPart *, xmlDocPtr, xmlNodePtr);
-
-/* Attribue une description humaine à une partie de code. */
-void g_binary_part_set_name(GBinPart *, const char *);
-
-/* Fournit la description attribuée à une partie de code. */
-const char *g_binary_part_get_name(const GBinPart *);
-
-/* Définit les valeurs utiles d'une partie de code. */
-void g_binary_part_set_values(GBinPart *, off_t, off_t, vmpa_t);
-
-/* Définit l'adresse virtuelle d'une partie de code. */
-void g_binary_part_set_address(GBinPart *, vmpa_t);
-
-/* Fournit les valeurs utiles d'une partie de code. */
-void g_binary_part_get_values(const GBinPart *, off_t *, off_t *, vmpa_t *);
-
-/* Etablit la comparaison entre deux blocs binaires. */
-int g_binary_part_compare(const GBinPart **, const GBinPart **);
-
-#ifdef DEBUG
-
-/* Mémorise un bilan de désassemblage. */
-void g_binary_part_set_checkup(GBinPart *, unsigned int, unsigned int);
-
-/* Mémorise un bilan de désassemblage. */
-void g_binary_part_get_checkup(const GBinPart *, unsigned int *, unsigned int *);
-
-#endif
-
-
-
-#endif /* _FORMAT_PART_H */
diff --git a/src/format/pe/pe.c b/src/format/pe/pe.c
index 2692560..16a9032 100644
--- a/src/format/pe/pe.c
+++ b/src/format/pe/pe.c
@@ -43,7 +43,7 @@ static void g_pe_format_init(GPeFormat *);
static FormatTargetMachine g_pe_format_get_target_machine(const GPeFormat *);
/* Fournit les références aux zones binaires à analyser. */
-static GBinPart **g_pe_format_get_parts(const GPeFormat *, size_t *);
+//static GBinPart **g_pe_format_get_parts(const GPeFormat *, size_t *);
/* Fournit la position correspondant à une adresse virtuelle. */
static bool g_pe_format_translate_address_into_offset(const GPeFormat *, vmpa_t, off_t *);
@@ -137,7 +137,6 @@ static void g_pe_format_init(GPeFormat *format)
exe_format = G_EXE_FORMAT(format);
exe_format->get_machine = (get_target_machine_fc)g_pe_format_get_target_machine;
- exe_format->get_parts = (get_parts_fc)g_pe_format_get_parts;
exe_format->translate_addr = (translate_addr_fc)g_pe_format_translate_address_into_offset;
exe_format->translate_off = (translate_off_fc)g_pe_format_translate_offset_into_address;
@@ -263,7 +262,7 @@ static FormatTargetMachine g_pe_format_get_target_machine(const GPeFormat *forma
* Remarques : - *
* *
******************************************************************************/
-
+#if 0
static GBinPart **g_pe_format_get_parts(const GPeFormat *format, size_t *count)
{
GBinPart **result; /* Tableau à retourner */
@@ -311,7 +310,7 @@ static GBinPart **g_pe_format_get_parts(const GPeFormat *format, size_t *count)
return result;
}
-
+#endif
/******************************************************************************
* *