diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/analysis/binaries/file.c | 5 | ||||
-rw-r--r-- | src/analysis/binaries/file.h | 3 | ||||
-rw-r--r-- | src/arch/Makefile.am | 3 | ||||
-rw-r--r-- | src/arch/vmpa.c | 87 | ||||
-rw-r--r-- | src/arch/vmpa.h | 68 | ||||
-rw-r--r-- | src/gtkext/gtkdockstation.c | 4 |
6 files changed, 163 insertions, 7 deletions
diff --git a/src/analysis/binaries/file.c b/src/analysis/binaries/file.c index df145f7..ad140ab 100644 --- a/src/analysis/binaries/file.c +++ b/src/analysis/binaries/file.c @@ -66,9 +66,6 @@ static void g_file_binary_finalize(GFileBinary *); /* Ecrit une sauvegarde du binaire dans un fichier XML. */ static bool g_file_binary_save(const GFileBinary *, xmlDocPtr, xmlXPathContextPtr, const char *); -/* Fournit le fichier correspondant à l'élément binaire. */ -static const char *g_file_binary_get_filename(const GFileBinary *, bool); - /* Indique le type défini pour une description de fichier binaire. */ @@ -348,7 +345,7 @@ static bool g_file_binary_save(const GFileBinary *binary, xmlDocPtr xdoc, xmlXPa * * ******************************************************************************/ -static const char *g_file_binary_get_filename(const GFileBinary *binary, bool full) +const char *g_file_binary_get_filename(const GFileBinary *binary, bool full) { const char *result; /* Description à retourner */ diff --git a/src/analysis/binaries/file.h b/src/analysis/binaries/file.h index d09c86d..40bc722 100644 --- a/src/analysis/binaries/file.h +++ b/src/analysis/binaries/file.h @@ -56,6 +56,9 @@ GLoadedBinary *g_file_binary_new_from_file(const char *); /* Charge en mémoire le contenu d'un fichier à partir d'XML. */ GLoadedBinary *g_file_binary_new_from_xml(xmlXPathContextPtr, const char *); +/* Fournit le fichier correspondant à l'élément binaire. */ +const char *g_file_binary_get_filename(const GFileBinary *, bool); + #endif /* _ANALYSIS_BINARIES_FILE_H */ diff --git a/src/arch/Makefile.am b/src/arch/Makefile.am index 94c8305..e87247e 100644 --- a/src/arch/Makefile.am +++ b/src/arch/Makefile.am @@ -15,7 +15,8 @@ libarch_la_SOURCES = \ processor.h processor.c \ register-int.h \ register.h register.c \ - translate.h + translate.h \ + vmpa.h vmpa.c libarch_la_LIBADD = \ arm/libarcharm.la \ diff --git a/src/arch/vmpa.c b/src/arch/vmpa.c new file mode 100644 index 0000000..24d5792 --- /dev/null +++ b/src/arch/vmpa.c @@ -0,0 +1,87 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * vmpa.c - adressages virtuels ou physiques + * + * Copyright (C) 2014 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 "vmpa.h" + + +#include <inttypes.h> +#include <malloc.h> + + + + + + + +/****************************************************************************** +* * +* Paramètres : phy = position dans la mémoire physique. * +* virt = adresse dans la mémoire virtuelle. * +* * +* Description : Crée une localisation dans l'adressage mémoire. * +* * +* Retour : Adressage alloué en mémoire. * +* * +* Remarques : - * +* * +******************************************************************************/ + +vmpa2_t *make_vmpa(off_t phy, uint64_t virt) +{ + vmpa2_t *result; /* Structure à retourner */ + + result = (vmpa2_t *)calloc(1, sizeof(vmpa2_t)); + + result->physical = phy; + result->virtual = virt; + + return result; + +} + + + + + +/****************************************************************************** +* * +* Paramètres : addr = élément à initialiser. * +* phy = position dans la mémoire physique. * +* virt = adresse dans la mémoire virtuelle. * +* * +* Description : Initialise une localisation dans l'espace mémoire/physique. * +* * +* Retour : Adressage alloué en mémoire. * +* * +* Remarques : - * +* * +******************************************************************************/ + +void init_vmpa(vmpa2_t *addr, off_t phy, uint64_t virt) +{ + addr->physical = phy; + addr->virtual = virt; + +} + + diff --git a/src/arch/vmpa.h b/src/arch/vmpa.h new file mode 100644 index 0000000..fa14fda --- /dev/null +++ b/src/arch/vmpa.h @@ -0,0 +1,68 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * vmpa.h - prototypes des adressages virtuels ou physiques + * + * Copyright (C) 2014 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_VMPA_H +#define _ARCH_VMPA_H + + +#include <stdbool.h> +#include <stdint.h> +#include <sys/types.h> + + + + + +/* Adresse mémoire ou position physique */ +struct _vmpa2_t +{ + off_t physical; /* Position physique */ + uint64_t virtual; /* Adresse virtuelle */ + +}; + + + +/* Adresse mémoire ou position physique */ +typedef struct _vmpa2_t vmpa2_t; + + +/* Initialise une localisation dans l'espace mémoire/physique. */ +void init_vmpa(vmpa2_t *, off_t, uint64_t); + + + + +/* Crée une localisation dans l'adressage mémoire. */ +vmpa2_t *make_vmpa(off_t, uint64_t); + + + +#define load_vmpa_from_fd(vmpa, fd) true + +#define store_vmpa_to_fd(vmpa, fd) true + + + + +#endif /* _ARCH_VMPA_H */ diff --git a/src/gtkext/gtkdockstation.c b/src/gtkext/gtkdockstation.c index c299542..a742c07 100644 --- a/src/gtkext/gtkdockstation.c +++ b/src/gtkext/gtkdockstation.c @@ -230,7 +230,7 @@ void gtk_dock_panel_add_widget(GtkDockStation *station, GtkWidget *widget, const char *str; /* Titre des prochaines fois */ GtkWidget *label; /* Etiquette d'onglet */ - max = get_integer_config_value(get_main_configuration(), MPT_ELLIPSIS_TAB); + max = 3; // TODO : config dans un .so pour Python // get_integer_config_value(get_main_configuration(), MPT_ELLIPSIS_TAB); str = ellipsis(strdup(caption), max); label = qck_create_label(NULL, NULL, str); @@ -249,7 +249,7 @@ void gtk_dock_panel_add_widget(GtkDockStation *station, GtkWidget *widget, const str = g_object_get_data(G_OBJECT(widget), "title"); if (str != NULL) free(str); - max = get_integer_config_value(get_main_configuration(), MPT_ELLIPSIS_HEADER); + max = 3; // TODO : config dans un .so pour Python // get_integer_config_value(get_main_configuration(), MPT_ELLIPSIS_HEADER); g_object_set_data(G_OBJECT(widget), "title", ellipsis(strdup(caption), max)); gtk_dock_panel_update_title(station, widget, caption); |