From 7c7109c1a8aaedea40af4b96d4b81d6ba4496226 Mon Sep 17 00:00:00 2001 From: Cyrille Bagard Date: Thu, 30 Oct 2008 18:35:47 +0000 Subject: Displayed all found strings on binary loading. git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@40 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a --- ChangeLog | 35 ++++++++++ src/Makefile.am | 1 + src/arch/processor-int.h | 4 ++ src/arch/processor.c | 58 +++++++++++++++++ src/arch/x86/processor.c | 1 + src/binary.c | 3 +- src/binary.h | 2 +- src/easygtk.c | 41 ++++++++++-- src/easygtk.h | 3 + src/editor.c | 42 +++++++++++- src/format/elf/e_elf.c | 59 +++++++++++++++++ src/format/exe_format-int.h | 4 ++ src/format/exe_format.c | 22 +++++++ src/format/exe_format.h | 12 ++++ src/pan_strings.c | 155 ++++++++++++++++++++++++++++++++++++++++++++ src/pan_strings.h | 45 +++++++++++++ src/pan_symbols.c | 7 +- src/pan_symbols.h | 4 +- 18 files changed, 483 insertions(+), 15 deletions(-) create mode 100644 src/pan_strings.c create mode 100644 src/pan_strings.h diff --git a/ChangeLog b/ChangeLog index b9dbaf5..13ebfed 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,38 @@ +2008-10-30 Cyrille Bagard + + * src/arch/processor.c: + * src/arch/processor-int.h: + * src/arch/x86/processor.c: + Remove the CR & LF characters when printing strings. + + * src/binary.c: + * src/binary.h: + Display all found strings on binary loading. + + * src/easygtk.c: + * src/easygtk.h: + Add a function which builds a notebook widget. + + * src/editor.c: + Build the bottom of the editor. + + * src/format/elf/e_elf.c: + * src/format/exe_format.c: + * src/format/exe_format.h: + * src/format/exe_format-int.h: + Begin to rename the function providing the list of all resolved items. + + * src/Makefile.am: + Add pan_strings.[ch] to openida_SOURCES. + + * src/pan_strings.c: + * src/pan_strings.h: + New entries: display all found strings. + + * src/pan_symbols.c: + * src/pan_symbols.h: + Typo. + 2008-10-29 Cyrille Bagard * src/arch/x86/op_call.c: diff --git a/src/Makefile.am b/src/Makefile.am index b1e31cd..2dec03f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -8,6 +8,7 @@ openida_SOURCES = \ editor.c \ gtksnippet.h gtksnippet.c \ gtkcodeview.h gtkcodeview.c \ + pan_strings.h pan_strings.c \ pan_symbols.h pan_symbols.c \ project.h project.c \ xdg.h xdg.c \ diff --git a/src/arch/processor-int.h b/src/arch/processor-int.h index 5dc12ff..6ceb7df 100644 --- a/src/arch/processor-int.h +++ b/src/arch/processor-int.h @@ -63,5 +63,9 @@ struct _asm_processor +/* S'assure qu'une chaîne de caractère tient sur une ligne. */ +char *escape_crlf_bin_string(char *); + + #endif /* _ARCH_PROCESSOR_INT_H */ diff --git a/src/arch/processor.c b/src/arch/processor.c index 1afb576..17f88b3 100644 --- a/src/arch/processor.c +++ b/src/arch/processor.c @@ -24,6 +24,10 @@ #include "processor.h" +#include +#include + + #include "instruction-int.h" #include "processor-int.h" @@ -84,6 +88,60 @@ asm_instr *decode_instruction(const asm_processor *proc, const uint8_t *data, of /****************************************************************************** * * +* Paramètres : input = chaîne de caractères à traiter. * +* * +* Description : S'assure qu'une chaîne de caractère tient sur une ligne. * +* * +* Retour : Adresse de la chaîne de caractères modifiée. * +* * +* Remarques : - * +* * +******************************************************************************/ + +char *escape_crlf_bin_string(char *input) +{ + size_t inlen; + regex_t preg; + int ret; + size_t curpos; + regmatch_t pmatch[2]; + + inlen = strlen(input); + + ret = regcomp(&preg, "(\t|\n|\r)", REG_EXTENDED | REG_ICASE); + /* TODO: ret */ + + for (curpos = 0; regexec(&preg, &input[curpos], 2, pmatch, 0) != REG_NOMATCH; ) + { + inlen += 1 + 1; + input = (char *)realloc(input, inlen * sizeof(char *)); + + memmove(&input[curpos + pmatch[1].rm_eo + 1], &input[curpos + pmatch[1].rm_eo], inlen - 1 - curpos - pmatch[1].rm_eo); + + switch (input[curpos + pmatch[1].rm_so]) + { + case '\t': + memcpy(&input[curpos + pmatch[1].rm_so], "\\t", 2); + break; + case '\n': + memcpy(&input[curpos + pmatch[1].rm_so], "\\n", 2); + break; + case '\r': + memcpy(&input[curpos + pmatch[1].rm_so], "\\r", 2); + break; + } + + curpos += pmatch[1].rm_eo + 1; + + } + + return input; + +} + + +/****************************************************************************** +* * * Paramètres : proc = architecture visée par la procédure. * * format = format du binaire manipulé. * * instr = instruction à traiter. * diff --git a/src/arch/x86/processor.c b/src/arch/x86/processor.c index 8cc3a72..8be503c 100644 --- a/src/arch/x86/processor.c +++ b/src/arch/x86/processor.c @@ -509,6 +509,7 @@ void x86_print_instruction(const asm_x86_processor *proc, const exe_format *form break; case STP_STRING: + label = escape_crlf_bin_string(label); snprintf(&opbuffer[i][oplen], 256 - oplen, " \"%s\"", label); break; diff --git a/src/binary.c b/src/binary.c index f9cc906..cc3fd70 100644 --- a/src/binary.c +++ b/src/binary.c @@ -340,7 +340,7 @@ uint8_t *map_binary_file(const char *filename, size_t *length) -void fill_snippet(GtkSnippet *snippet, GtkWidget *panel) +void fill_snippet(GtkSnippet *snippet, GtkWidget *panel, GtkWidget *panel2) { off_t length; uint8_t *bin_data; @@ -503,6 +503,7 @@ void fill_snippet(GtkSnippet *snippet, GtkWidget *panel) } handle_new_exe_on_symbols_panel(panel, format); + handle_new_exe_on_strings_panel(panel2, format); } diff --git a/src/binary.h b/src/binary.h index e1cc97b..8a36a02 100644 --- a/src/binary.h +++ b/src/binary.h @@ -64,7 +64,7 @@ bool write_openida_binary_to_xml(const openida_binary *, xmlTextWriterPtr); -void fill_snippet(GtkSnippet *snippet, GtkWidget *panel); +void fill_snippet(GtkSnippet *snippet, GtkWidget *panel, GtkWidget *panel2); diff --git a/src/easygtk.c b/src/easygtk.c index 93ba653..4eb5bcd 100644 --- a/src/easygtk.c +++ b/src/easygtk.c @@ -58,11 +58,10 @@ GtkWidget *qck_create_padded_alignment(guint pt, guint pb, guint pl, guint pr) * * * Paramètres : caption = contenu de l'étiqutte à placer. * * alignment = conteneur réel à utiliser pour la suite. [OUT] * -* pt = espace imposé à la zone supérieure. * -* pb = espace imposé à la zone inférieure. * -* pl = espace imposé à la zone gauche. * -* pr = espace imposé à la zone droite. * -* * +* pt = espace imposé à la zone supérieure. * +* pb = espace imposé à la zone inférieure. * +* pl = espace imposé à la zone gauche. * +* pr = espace imposé à la zone droite. * * * * Description : Met en place une frame. * * * @@ -96,6 +95,38 @@ GtkWidget *qck_create_frame(const char *caption, GtkWidget **alignment, guint pt /****************************************************************************** * * +* Paramètres : object = espace dédié à l'inscription de références. * +* name = nom à donner au nouveau composant. * +* * +* Description : Met en place un support à onglets. * +* * +* Retour : Composant 'GtkWidget' ici créé. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GtkWidget *qck_create_notebook(GObject *object, const char *name) +{ + GtkWidget *result; /* Instance à renvoyer */ + + result = gtk_notebook_new(); + + if (G_IS_OBJECT(object) && name != NULL) + { + gtk_widget_ref(result); + g_object_set_data_full(object, name, result, (GtkDestroyNotify)gtk_widget_unref); + } + + gtk_widget_show(result); + + return result; + +} + + +/****************************************************************************** +* * * Paramètres : object = espace dédié à l'inscription de références. * * name = nom à donner au nouveau composant. * * caption = intitulé apparaissant sur le composant. * diff --git a/src/easygtk.h b/src/easygtk.h index 7499815..cfd5b1a 100644 --- a/src/easygtk.h +++ b/src/easygtk.h @@ -35,6 +35,9 @@ GtkWidget *qck_create_padded_alignment(guint, guint, guint, guint); /* Met en place une frame. */ GtkWidget *qck_create_frame(const char *, GtkWidget **, guint, guint, guint, guint); +/* Met en place un support à onglets. */ +GtkWidget *qck_create_notebook(GObject *, const char *); + /* Crée un composant 'GtkLabel'. */ GtkWidget *qck_create_label(GObject *, const char *, const char *); diff --git a/src/editor.c b/src/editor.c index 0673110..a07301f 100644 --- a/src/editor.c +++ b/src/editor.c @@ -54,6 +54,7 @@ #include "easygtk.h" #include "gtksnippet.h" #include "gtkcodeview.h" +#include "pan_strings.h" #include "pan_symbols.h" @@ -429,10 +430,17 @@ GtkWidget *create_editor(void) GtkWidget *codeview; GtkWidget *panel; + GtkWidget *_panel; + openida_project *project; + GtkWidget *notebook; /* Support à onglets */ + GtkWidget *label; /* Etiquette pour onglet */ + + + #if 0 GtkWidget *vbox; /* Support à divisions vert. */ GtkWidget *notebook; /* Support à onglets */ @@ -560,6 +568,9 @@ GtkWidget *create_editor(void) panel = build_symbols_panel(G_OBJECT(result)); gtk_paned_pack2 (GTK_PANED (hpaned1), panel, TRUE, TRUE); + _panel = panel; + + label1 = gtk_label_new (_("Registres :")); gtk_widget_show (label1); gtk_fixed_put (GTK_FIXED (fixed1), label1, 16, 48); @@ -724,6 +735,27 @@ GtkWidget *create_editor(void) (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label21), 0, 0.5); + + + + /* Panneau inférieur */ + + notebook = qck_create_notebook(NULL, NULL); + gtk_paned_pack2(GTK_PANED(vpaned1), notebook, FALSE, FALSE); + + panel = build_strings_panel(G_OBJECT(result)); + gtk_container_add(GTK_CONTAINER(notebook), panel); + + label = qck_create_label(NULL, NULL, _("Strings")); + gtk_notebook_set_tab_label(GTK_NOTEBOOK(notebook), gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), 0), label); + + + + + + + /* + scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow1); gtk_paned_pack2 (GTK_PANED (vpaned1), scrolledwindow1, TRUE, TRUE); @@ -732,6 +764,10 @@ GtkWidget *create_editor(void) gtk_widget_show (textview1); gtk_container_add (GTK_CONTAINER (scrolledwindow1), textview1); + + */ + + statusbar1 = gtk_statusbar_new (); gtk_widget_show (statusbar1); gtk_box_pack_start (GTK_BOX (vbox1), statusbar1, FALSE, FALSE, 0); @@ -757,7 +793,11 @@ GtkWidget *create_editor(void) - fill_snippet(textview2, panel); + /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ + fill_snippet(textview2, _panel, panel); + + + return result; diff --git a/src/format/elf/e_elf.c b/src/format/elf/e_elf.c index a9eacea..48b4455 100644 --- a/src/format/elf/e_elf.c +++ b/src/format/elf/e_elf.c @@ -35,6 +35,13 @@ +/* S'assure qu'une chaîne de caractère tient sur une ligne. */ +extern char *escape_crlf_bin_string(char *); + + +/* Récupère tous les éléments identifiées dans le binaire. */ +size_t get_elf_resolved_items(const elf_format *, char ***, ResolvedType **, uint64_t **); + @@ -73,6 +80,7 @@ elf_format *load_elf(const uint8_t *content, off_t length) EXE_FORMAT(result)->get_def_parts = (get_def_parts_fc)get_elf_default_code_parts; EXE_FORMAT(result)->find_section = (find_section_fc)find_elf_section_content_by_name; EXE_FORMAT(result)->get_symbols = (get_symbols_fc)get_elf_symbols; + EXE_FORMAT(result)->get_resolved = (get_resolved_fc)get_elf_resolved_items; EXE_FORMAT(result)->resolve_symbol = (resolve_symbol_fc)resolve_elf_symbol; memcpy(&result->header, content, sizeof(Elf32_Ehdr)); @@ -264,6 +272,57 @@ size_t get_elf_symbols(const elf_format *format, char ***labels, SymbolType **ty /****************************************************************************** * * +* 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_elf_resolved_items(const elf_format *format, char ***labels, ResolvedType **types, uint64_t **offsets) +{ + size_t result; /* Quantité à retourner */ + size_t i; /* Boucle de parcours */ + size_t start; /* Point de départ du tour */ + + result = format->sym_count + format->str_count; + + *labels = (char **)calloc(result, sizeof(char *)); + *types = (SymbolType *)calloc(result, sizeof(SymbolType)); + *offsets = (uint64_t *)calloc(result, sizeof(uint64_t)); + + for (i = 0; i < format->sym_count; i++) + { + (*labels)[i] = strdup(format->symbols[i].name); + (*types)[i] = RTP_SECTION; + (*offsets)[i] = format->symbols[i].address; + } + + start = format->sym_count; + + for (i = 0; i < format->str_count; i++) + { + (*labels)[start + i] = strndup(format->strings[i].value, format->strings[i].len); + (*types)[start + i] = RTP_STRING; + (*offsets)[start + i] = format->strings[i].vaddress; + + (*labels)[start + i] = escape_crlf_bin_string((*labels)[start + i]); + + } + + return result; + +} + + +/****************************************************************************** +* * * Paramètres : format = informations chargées à consulter. * * label = étiquette du symbole si trouvé. [OUT] * * type = type du symbole trouvé. [OUT] * diff --git a/src/format/exe_format-int.h b/src/format/exe_format-int.h index 4dcf1c4..2fdb673 100644 --- a/src/format/exe_format-int.h +++ b/src/format/exe_format-int.h @@ -57,6 +57,9 @@ typedef bool (* find_section_fc) (const exe_format *, const char *, off_t *, off /* 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 *, uint64_t *); @@ -71,6 +74,7 @@ struct _exe_format 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 */ }; diff --git a/src/format/exe_format.c b/src/format/exe_format.c index bc6cfff..30976f1 100644 --- a/src/format/exe_format.c +++ b/src/format/exe_format.c @@ -213,6 +213,28 @@ size_t get_exe_symbols(const exe_format *format, char ***labels, SymbolType **ty /****************************************************************************** * * +* 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] * diff --git a/src/format/exe_format.h b/src/format/exe_format.h index 53257fb..9be91fb 100644 --- a/src/format/exe_format.h +++ b/src/format/exe_format.h @@ -69,6 +69,15 @@ typedef enum _SymbolType } SymbolType; +/* Types de symbole */ +typedef enum _ResolvedType +{ + RTP_SECTION, /* Simple morceau de code */ + RTP_STRING /* Chaîne de caractères */ + +} ResolvedType; + + /* Recherche une section donnée au sein de binaire. */ bool find_exe_section(const exe_format *, const char *, off_t *, off_t *, uint64_t *); @@ -76,6 +85,9 @@ bool find_exe_section(const exe_format *, const char *, off_t *, off_t *, uint64 /* 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 *, uint64_t *); diff --git a/src/pan_strings.c b/src/pan_strings.c new file mode 100644 index 0000000..0b5a951 --- /dev/null +++ b/src/pan_strings.c @@ -0,0 +1,155 @@ + +/* OpenIDA - Outil d'analyse de fichiers binaires + * pan_strings.c - panneau d'affichage des chaînes de caractères + * + * Copyright (C) 2006-2007 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 "pan_strings.h" + + +/* Colonnes de la liste des symboles */ +typedef enum _StringsColumn +{ + STC_ADDRESS, /* Adresse mémoire du symbole */ + STC_STRING, /* Désignation humaine */ + + STC_COUNT /* Nombre de colonnes */ + +} StringsColumn; + + +#define _(str) str + + +/****************************************************************************** +* * +* Paramètres : ref = adresse de l'espace de référencements. * +* * +* Description : Construit le panneau d'affichage des symboles. * +* * +* Retour : Adresse du panneau mis en place. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GtkWidget *build_strings_panel(GObject *ref) +{ + GtkWidget *result; /* Pnneau à retourner */ + GtkTreeStore *store; /* Modèle de gestion */ + GtkWidget *treeview; /* Affichage de la liste */ + GtkCellRenderer *renderer; /* Moteur de rendu de colonne */ + GtkTreeViewColumn *column; /* Colonne de la liste */ + GtkTreeSelection *select; /* Sélection dans la liste */ + + result = gtk_scrolled_window_new(NULL, NULL); + gtk_widget_show(result); + + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(result), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(result), GTK_SHADOW_IN); + + store = gtk_tree_store_new(STC_COUNT, G_TYPE_STRING, G_TYPE_STRING); + g_object_set_data(G_OBJECT(result), "store", store); + + treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); + gtk_widget_show(treeview); + gtk_container_add(GTK_CONTAINER(result), treeview); + + g_object_unref(G_OBJECT(store)); + + column = gtk_tree_view_column_new(); + gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); + gtk_tree_view_set_expander_column(GTK_TREE_VIEW(treeview), column); + + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes(_("Address"), renderer, "text", STC_ADDRESS, NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); + + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes(_("String"), renderer, "text", STC_STRING, NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); + + + /* + select = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); + gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE); + g_signal_connect(G_OBJECT(select), "changed", G_CALLBACK(change_symbols_selection), ref); + */ + + + + return result; + +} + + + +/****************************************************************************** +* * +* Paramètres : panel = panneau à mettre à jour. * +* format = données sur l'exécutable à représenter. * +* * +* Description : Affiche la liste des symboles présents dans un exécutable. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void handle_new_exe_on_strings_panel(GtkWidget *panel, const exe_format *format) +{ + GtkTreeStore *store; /* Modèle de gestion */ + GtkTreeIter iter; /* Point d'insertion */ + char **labels; /* Etiquettes humaines */ + ResolvedType *types; /* Type des symboles listés */ + uint64_t *offsets; /* Emplacements de mémoire */ + size_t count; /* Nombre des symboles */ + size_t i; /* Boucle de parcours */ + char address[11]; + + store = g_object_get_data(G_OBJECT(panel), "store"); + + count = get_exe_resolved_items(format, &labels, &types, &offsets); + + if (count > 0) + { + for (i = 0; i < count; i++) + { + if (types[i] != RTP_STRING) continue; + + snprintf(address, 11, "0x%08llx", offsets[i]); + + gtk_tree_store_append(store, &iter, NULL); + gtk_tree_store_set(store, &iter, + STC_ADDRESS, address, + STC_STRING, labels[i], + -1); + + } + + free(labels); + free(types); + free(offsets); + + } + +} diff --git a/src/pan_strings.h b/src/pan_strings.h new file mode 100644 index 0000000..01c2627 --- /dev/null +++ b/src/pan_strings.h @@ -0,0 +1,45 @@ + +/* OpenIDA - Outil d'analyse de fichiers binaires + * pan_strings.h - prototypes pour le panneau d'affichage des chaînes de caractères + * + * Copyright (C) 2006-2007 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 + */ + + +#ifndef _PAN_STRINGS_H +#define _PAN_STRINGS_H + + +#include + + +#include "format/exe_format.h" + + + +/* Construit le panneau d'affichage des symboles. */ +GtkWidget *build_strings_panel(GObject *); + + +/* Affiche la liste des symboles présents dans un exécutable. */ +void handle_new_exe_on_strings_panel(GtkWidget *, const exe_format *); + + + +#endif /* _PAN_STRINGS_H */ diff --git a/src/pan_symbols.c b/src/pan_symbols.c index c2e7788..cef099e 100644 --- a/src/pan_symbols.c +++ b/src/pan_symbols.c @@ -1,6 +1,6 @@ -/* OpenIDA - Outils de configurations pour le WM Firebox - * pan_symmbols.c - panneau d'affichage des symboles +/* OpenIDA - Outil d'analyse de fichiers binaires + * pan_symbols.c - panneau d'affichage des symboles * * Copyright (C) 2006-2007 Cyrille Bagard * @@ -100,7 +100,6 @@ GtkWidget *build_symbols_panel(GObject *ref) column = gtk_tree_view_column_new_with_attributes("Name", renderer, "text", SBC_NAME, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); - select = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE); g_signal_connect(G_OBJECT(select), "changed", G_CALLBACK(change_symbols_selection), ref); @@ -202,5 +201,3 @@ void handle_new_exe_on_symbols_panel(GtkWidget *panel, const exe_format *format) } - - diff --git a/src/pan_symbols.h b/src/pan_symbols.h index 1fd1ee6..d294717 100644 --- a/src/pan_symbols.h +++ b/src/pan_symbols.h @@ -1,6 +1,6 @@ -/* OpenIDA - Outils de configurations pour le WM Firebox - * pan_symmbols.h - prototypes pour le panneau d'affichage des symboles +/* OpenIDA - Outil d'analyse de fichiers binaires + * pan_symbols.h - prototypes pour le panneau d'affichage des symboles * * Copyright (C) 2006-2007 Cyrille Bagard * -- cgit v0.11.2-87-g4458