summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog97
-rw-r--r--configure.ac1
-rw-r--r--plugins/dexresolver/context.c12
-rw-r--r--plugins/dexresolver/context.h2
-rw-r--r--plugins/dexresolver/plugin.c2
-rw-r--r--plugins/dexresolver/plugin.h2
-rw-r--r--plugins/pychrysa/analysis/binary.c27
-rw-r--r--plugins/pychrysa/analysis/binary.h2
-rw-r--r--plugins/pychrysa/analysis/py_binary.c6
-rw-r--r--plugins/pychrysa/analysis/py_binary.h2
-rw-r--r--plugins/pychrysa/plugin.c4
-rw-r--r--plugins/stackvars/stackvars.c6
-rw-r--r--plugins/stackvars/stackvars.h2
-rw-r--r--plugins/theseus/theseus.c42
-rw-r--r--plugins/theseus/theseus.h2
-rwxr-xr-xsrc/analysis/Makefile.am3
-rwxr-xr-xsrc/analysis/binaries/Makefile.am18
-rw-r--r--src/analysis/binaries/file.c328
-rw-r--r--src/analysis/binaries/file.h61
-rw-r--r--src/analysis/binary-int.h84
-rw-r--r--src/analysis/binary.c728
-rw-r--r--src/analysis/binary.h74
-rw-r--r--src/analysis/decomp/decompiler.c10
-rw-r--r--src/analysis/decomp/decompiler.h2
-rw-r--r--src/analysis/disass/disassembler.c14
-rw-r--r--src/analysis/disass/disassembler.h2
-rw-r--r--src/analysis/disass/fetch.c6
-rw-r--r--src/analysis/disass/fetch.h2
-rw-r--r--src/debug/debugger-int.h2
-rw-r--r--src/debug/debugger.c2
-rw-r--r--src/debug/debugger.h2
-rw-r--r--src/debug/jdwp/debugger.c2
-rw-r--r--src/debug/jdwp/debugger.h2
-rw-r--r--src/debug/remgdb/gdb.c2
-rw-r--r--src/debug/remgdb/gdb.h2
-rw-r--r--src/dialogs/add_shellcode.c16
-rw-r--r--src/dialogs/binparts.c28
-rw-r--r--src/dialogs/binparts.h2
-rw-r--r--src/dialogs/export.c14
-rw-r--r--src/dialogs/export.h2
-rw-r--r--src/dialogs/plugins.c8
-rw-r--r--src/dialogs/plugins.h2
-rw-r--r--src/editor.c30
-rw-r--r--src/graph/layout.c4
-rw-r--r--src/gtkext/easygtk.c6
-rw-r--r--src/gtkext/gtkbinview-int.h2
-rw-r--r--src/gtkext/gtkbinview.c10
-rw-r--r--src/gtkext/gtkbinview.h2
-rw-r--r--src/gtkext/gtkblockview.c6
-rw-r--r--src/gtkext/gtkdockpanel.c4
-rw-r--r--src/gtkext/gtkdockstation.c4
-rw-r--r--src/gtkext/gtkgraphview.c20
-rw-r--r--src/gtkext/gtksourceview.c6
-rw-r--r--src/gtkext/gtkviewpanel-int.h4
-rw-r--r--src/gtkext/gtkviewpanel.c6
-rw-r--r--src/gtkext/gtkviewpanel.h4
-rw-r--r--src/gui/editem-int.h2
-rw-r--r--src/gui/editem.c4
-rw-r--r--src/gui/editem.h4
-rw-r--r--src/gui/menus/binary.c2
-rw-r--r--src/gui/menus/debug.c4
-rw-r--r--src/gui/menus/project.c15
-rw-r--r--src/gui/menus/view.c2
-rw-r--r--src/gui/panels/symbols.c10
-rw-r--r--src/gui/tb/source.c14
-rw-r--r--src/panels/breaks.c15
-rw-r--r--src/panels/panel-int.h2
-rw-r--r--src/panels/panel.c4
-rw-r--r--src/panels/panel.h4
-rw-r--r--src/plugins/plugin-int.h2
-rw-r--r--src/plugins/plugin.c2
-rw-r--r--src/plugins/plugin.h2
-rw-r--r--src/project.c33
-rw-r--r--src/project.h10
74 files changed, 1006 insertions, 860 deletions
diff --git a/ChangeLog b/ChangeLog
index d1bd7b4..96c7ce1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,100 @@
+12-08-13 Cyrille Bagard <nocbos@gmail.com>
+
+ * configure.ac:
+ Add the new Makefile from the 'src/analysis/binaries directory
+ to AC_CONFIG_FILES.
+
+ * plugins/dexresolver/context.c:
+ * plugins/dexresolver/context.h:
+ * plugins/dexresolver/plugin.c:
+ * plugins/dexresolver/plugin.h:
+ * plugins/pychrysa/analysis/binary.c:
+ * plugins/pychrysa/analysis/binary.h:
+ * plugins/pychrysa/analysis/py_binary.c:
+ * plugins/pychrysa/analysis/py_binary.h:
+ * plugins/pychrysa/plugin.c:
+ * plugins/stackvars/stackvars.c:
+ * plugins/stackvars/stackvars.h:
+ * plugins/theseus/theseus.c:
+ * plugins/theseus/theseus.h:
+ Update code.
+
+ * src/analysis/binaries/file.c:
+ * src/analysis/binaries/file.h:
+ * src/analysis/binaries/Makefile.am:
+ New entries: handle file binaries properly.
+
+ * src/analysis/binary.c:
+ * src/analysis/binary.h:
+ Clean and update the code.
+
+ * src/analysis/binary-int.h:
+ New entry: store the code shared by binaries here.
+
+ * src/analysis/decomp/decompiler.c:
+ * src/analysis/decomp/decompiler.h:
+ * src/analysis/disass/disassembler.c:
+ * src/analysis/disass/disassembler.h:
+ * src/analysis/disass/fetch.c:
+ * src/analysis/disass/fetch.h:
+ Update code.
+
+ * src/analysis/Makefile.am:
+ Add the binaries/libanalysisbinaries.la file to libanalysis_la_LIBADD
+ and binaries to SUBDIRS.
+
+ * src/debug/debugger.c:
+ * src/debug/debugger.h:
+ * src/debug/debugger-int.h:
+ * src/debug/jdwp/debugger.c:
+ * src/debug/jdwp/debugger.h:
+ * src/debug/remgdb/gdb.c:
+ * src/debug/remgdb/gdb.h:
+ * src/dialogs/add_shellcode.c:
+ * src/dialogs/binparts.c:
+ * src/dialogs/binparts.h:
+ * src/dialogs/export.c:
+ * src/dialogs/export.h:
+ * src/dialogs/plugins.c:
+ * src/dialogs/plugins.h:
+ * src/editor.c:
+ * src/graph/layout.c:
+ Update code.
+
+ * src/gtkext/easygtk.c:
+ * src/gtkext/gtkbinview.c:
+ * src/gtkext/gtkbinview.h:
+ * src/gtkext/gtkbinview-int.h:
+ * src/gtkext/gtkblockview.c:
+ * src/gtkext/gtkdockpanel.c:
+ * src/gtkext/gtkdockstation.c:
+ * src/gtkext/gtkgraphview.c:
+ * src/gtkext/gtksourceview.c:
+ * src/gtkext/gtkviewpanel.c:
+ * src/gtkext/gtkviewpanel.h:
+ * src/gtkext/gtkviewpanel-int.h:
+ Update code and make it compile with the lastest versions of GTK.
+
+ * src/gui/editem.c:
+ * src/gui/editem.h:
+ * src/gui/editem-int.h:
+ * src/gui/menus/binary.c:
+ * src/gui/menus/debug.c:
+ * src/gui/menus/project.c:
+ * src/gui/menus/view.c:
+ * src/gui/panels/symbols.c:
+ * src/gui/tb/source.c:
+ * src/panels/breaks.c:
+ * src/panels/panel.c:
+ * src/panels/panel.h:
+ * src/panels/panel-int.h:
+ * src/plugins/plugin.c:
+ * src/plugins/plugin.h:
+ * src/plugins/plugin-int.h:
+ * src/project.c:
+ * src/project.h:
+ Update code.
+
12-08-06 Cyrille Bagard <nocbos@gmail.com>
* configure.ac:
diff --git a/configure.ac b/configure.ac
index ae07522..9f369da 100644
--- a/configure.ac
+++ b/configure.ac
@@ -250,6 +250,7 @@ AC_CONFIG_FILES([Makefile
plugins/theseus/Makefile
src/Makefile
src/analysis/Makefile
+ src/analysis/binaries/Makefile
src/analysis/decomp/Makefile
src/analysis/disass/Makefile
src/arch/Makefile
diff --git a/plugins/dexresolver/context.c b/plugins/dexresolver/context.c
index 19be9c0..b63ccf3 100644
--- a/plugins/dexresolver/context.c
+++ b/plugins/dexresolver/context.c
@@ -51,7 +51,7 @@ typedef struct _GDexResolverWork
{
GDelayedWork parent; /* A laisser en premier */
- GOpenidaBinary *binary; /* Destinataire final */
+ GLoadedBinary *binary; /* Destinataire final */
} GDexResolverWork;
@@ -74,7 +74,7 @@ static void g_dex_resolver_work_class_init(GDexResolverWorkClass *);
static void g_dex_resolver_work_init(GDexResolverWork *);
/* Crée une tâche de résolution d'opérandes différée. */
-static GDexResolverWork *g_dex_resolver_work_new(GOpenidaBinary *);
+static GDexResolverWork *g_dex_resolver_work_new(GLoadedBinary *);
/* Assure la résolution d'opérandes en différé. */
static void g_dex_resolver_work_process(GDexResolverWork *, GtkExtStatusBar *);
@@ -172,7 +172,7 @@ static void g_dex_resolver_work_init(GDexResolverWork *disass)
* *
******************************************************************************/
-static GDexResolverWork *g_dex_resolver_work_new(GOpenidaBinary *binary)
+static GDexResolverWork *g_dex_resolver_work_new(GLoadedBinary *binary)
{
GDexResolverWork *result; /* Tâche à retourner */
@@ -209,9 +209,9 @@ static void g_dex_resolver_work_process(GDexResolverWork *work, GtkExtStatusBar
const GArchOperand *op; /* Opérande à analyser */
GArchOperand *new; /* Nouvel opérande à afficher */
- format = G_DEX_FORMAT(g_openida_binary_get_format(work->binary));
+ format = G_DEX_FORMAT(g_loaded_binary_get_format(work->binary));
- lines = g_openida_binary_get_lines(work->binary);
+ lines = g_loaded_binary_get_lines(work->binary);
for (iter = lines;
iter != NULL;
@@ -303,7 +303,7 @@ static void g_dex_resolver_context_init(GDexResolverContext *context)
* *
******************************************************************************/
-GPluginContext *g_dex_resolver_context_new(GOpenidaBinary *binary)
+GPluginContext *g_dex_resolver_context_new(GLoadedBinary *binary)
{
GPluginContext *result; /* Bilan d'exécution à renvoyer*/
GDexResolverWork *work; /* Tâche de parcours de lignes */
diff --git a/plugins/dexresolver/context.h b/plugins/dexresolver/context.h
index 79e4204..bcc4f19 100644
--- a/plugins/dexresolver/context.h
+++ b/plugins/dexresolver/context.h
@@ -50,7 +50,7 @@ typedef struct _GDexResolverContextClass GDexResolverContextClass;
GType g_dex_resolver_context_get_type(void);
/* Lance l'exécution d'une action du greffon. */
-GPluginContext *g_dex_resolver_context_new(GOpenidaBinary *);
+GPluginContext *g_dex_resolver_context_new(GLoadedBinary *);
diff --git a/plugins/dexresolver/plugin.c b/plugins/dexresolver/plugin.c
index 356f7cf..7a2fe77 100644
--- a/plugins/dexresolver/plugin.c
+++ b/plugins/dexresolver/plugin.c
@@ -98,7 +98,7 @@ G_MODULE_EXPORT PluginAction get_plugin_action(void)
* *
******************************************************************************/
-G_MODULE_EXPORT bool execute_action_on_binary(GOpenidaBinary *binary, PluginAction action)
+G_MODULE_EXPORT bool execute_action_on_binary(GLoadedBinary *binary, PluginAction action)
{
bool result; /* Bilan à retourner */
diff --git a/plugins/dexresolver/plugin.h b/plugins/dexresolver/plugin.h
index 85da278..c5a1a97 100644
--- a/plugins/dexresolver/plugin.h
+++ b/plugins/dexresolver/plugin.h
@@ -42,7 +42,7 @@ G_MODULE_EXPORT PluginType get_plugin_type(void);
G_MODULE_EXPORT PluginAction get_plugin_action(void);
/* Exécute une action définie sur un binaire chargé. */
-G_MODULE_EXPORT bool execute_action_on_binary(GOpenidaBinary *, PluginAction);
+G_MODULE_EXPORT bool execute_action_on_binary(GLoadedBinary *, PluginAction);
diff --git a/plugins/pychrysa/analysis/binary.c b/plugins/pychrysa/analysis/binary.c
index 44721b5..93db685 100644
--- a/plugins/pychrysa/analysis/binary.c
+++ b/plugins/pychrysa/analysis/binary.c
@@ -28,6 +28,9 @@
#include <pygobject.h>
+#include <analysis/binaries/file.h> /* REMME ! */
+
+
#include "../quirks.h"
#include "../arch/instruction.h"
#include "../glibext/codebuffer.h"
@@ -70,12 +73,12 @@ static PyObject *py_loaded_binary_new(PyTypeObject *type, PyObject *args, PyObje
PyObject *result; /* Instance à retourner */
char *filename; /* Nom du fichier à charger */
int ret; /* Bilan de lecture des args. */
- GOpenidaBinary *binary; /* Version GLib du format */
+ GLoadedBinary *binary; /* Version GLib du format */
ret = PyArg_ParseTuple(args, "s", &filename);
if (!ret) return Py_None;
- binary = g_openida_binary_new_from_file(filename);
+ binary = g_file_binary_new_from_file(filename);
result = py_loaded_binary_from_c(binary);
g_object_unref(binary);
@@ -97,7 +100,7 @@ static PyObject *py_loaded_binary_new(PyTypeObject *type, PyObject *args, PyObje
* *
******************************************************************************/
-PyObject *py_loaded_binary_from_c(GOpenidaBinary *binary)
+PyObject *py_loaded_binary_from_c(GLoadedBinary *binary)
{
PyObject *module; /* Module d'appartenance */
PyTypeObject *type; /* Type Python correspondant */
@@ -129,12 +132,12 @@ PyObject *py_loaded_binary_from_c(GOpenidaBinary *binary)
static PyObject *py_loaded_binary_get_filename(PyObject *self, PyObject *args)
{
PyObject *result; /* Trouvailles à retourner */
- GOpenidaBinary *binary; /* Version native */
+ GLoadedBinary *binary; /* Version native */
const char *filename; /* Fichier associé au binaire */
- binary = G_OPENIDA_BINARY(pygobject_get(self));
+ binary = G_LOADED_BINARY(pygobject_get(self));
- filename = g_openida_binary_get_filename(binary);
+ filename = g_loaded_binary_get_filename(binary, true);
result = PyString_FromString(filename);
@@ -159,12 +162,12 @@ static PyObject *py_loaded_binary_get_filename(PyObject *self, PyObject *args)
static PyObject *py_loaded_binary_get_instructions(PyObject *self, PyObject *args)
{
PyObject *result; /* Trouvailles à retourner */
- GOpenidaBinary *binary; /* Version native */
+ GLoadedBinary *binary; /* Version native */
GArchInstruction *instr; /* Première instruction */
- binary = G_OPENIDA_BINARY(pygobject_get(self));
+ binary = G_LOADED_BINARY(pygobject_get(self));
- instr = g_openida_binary_get_instructions(binary);
+ instr = g_loaded_binary_get_instructions(binary);
result = py_arch_instruction_from_c(instr);
@@ -192,11 +195,11 @@ static PyObject *py_loaded_binary_get_instructions(PyObject *self, PyObject *arg
static PyObject *py_loaded_binary_get_disassembled_buffer(PyObject *self, void *closure)
{
PyObject *result; /* Trouvailles à retourner */
- GOpenidaBinary *binary; /* Version native */
+ GLoadedBinary *binary; /* Version native */
GCodeBuffer *buffer; /* Tampon à récupérer */
- binary = G_OPENIDA_BINARY(pygobject_get(self));
- buffer = g_openida_binary_get_disassembled_buffer(binary);
+ binary = G_LOADED_BINARY(pygobject_get(self));
+ buffer = g_loaded_binary_get_disassembled_buffer(binary);
result = py_code_buffer_from_c(buffer);
diff --git a/plugins/pychrysa/analysis/binary.h b/plugins/pychrysa/analysis/binary.h
index 89e5e59..33ead7e 100644
--- a/plugins/pychrysa/analysis/binary.h
+++ b/plugins/pychrysa/analysis/binary.h
@@ -34,7 +34,7 @@
/* Crée un nouvel objet Python de type 'LoadedBinary'. */
-PyObject *py_loaded_binary_from_c(GOpenidaBinary *);
+PyObject *py_loaded_binary_from_c(GLoadedBinary *);
/* Prend en charge l'objet 'pychrysalide.analysis.LoadedBinary'. */
bool register_python_loaded_binary(PyObject *);
diff --git a/plugins/pychrysa/analysis/py_binary.c b/plugins/pychrysa/analysis/py_binary.c
index 04d4881..7c1653d 100644
--- a/plugins/pychrysa/analysis/py_binary.c
+++ b/plugins/pychrysa/analysis/py_binary.c
@@ -35,7 +35,7 @@
typedef struct {
PyObject_HEAD
- GOpenidaBinary *binary; /* Instance réelle rattachée */
+ GLoadedBinary *binary; /* Instance réelle rattachée */
} pybinary;
@@ -126,7 +126,7 @@ pybinary_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
* *
******************************************************************************/
-PyObject *pybinary_new_from_existing(GOpenidaBinary *binary)
+PyObject *pybinary_new_from_existing(GLoadedBinary *binary)
{
pybinary *result; /* Nouvelle instance à renvoyer*/
PyTypeObject *type; /* Type d'objet à créer */
@@ -216,7 +216,7 @@ static PyObject *pybinary_get_lines(pybinary *self)
PyObject *result; /* Liste à retourner */
GRenderingLine *lines; /* Liste récupérée à convertir */
- lines = g_openida_binary_get_lines(self->binary);
+ lines = g_loaded_binary_get_lines(self->binary);
result = pyline_new_from_existing(lines, lines);
diff --git a/plugins/pychrysa/analysis/py_binary.h b/plugins/pychrysa/analysis/py_binary.h
index f87d2a5..92c37eb 100644
--- a/plugins/pychrysa/analysis/py_binary.h
+++ b/plugins/pychrysa/analysis/py_binary.h
@@ -35,7 +35,7 @@
/* Initialise le greffon permettant l'usage de Python. */
-PyObject *pybinary_new_from_existing(GOpenidaBinary *);
+PyObject *pybinary_new_from_existing(GLoadedBinary *);
/* Ajoute l'objet 'binary' au module Python. */
bool add_binary_to_python_module(PyObject *);
diff --git a/plugins/pychrysa/plugin.c b/plugins/pychrysa/plugin.c
index 6d8a494..70ca26e 100644
--- a/plugins/pychrysa/plugin.c
+++ b/plugins/pychrysa/plugin.c
@@ -72,7 +72,7 @@ static PluginAction g_python_plugin_get_action(const GPythonPlugin *);
static MatchingFormatAction g_python_plugin_is_matching(const GPythonPlugin *, char **, bin_t **, off_t *);
/* Exécute une action définie sur un binaire chargé. */
-static bool g_python_plugin_execute_on_binary(GPythonPlugin *, GOpenidaBinary *, PluginAction);
+static bool g_python_plugin_execute_on_binary(GPythonPlugin *, GLoadedBinary *, PluginAction);
/* Exécute une action relative à un débogueur. */
@@ -496,7 +496,7 @@ static MatchingFormatAction g_python_plugin_is_matching(const GPythonPlugin *plu
* *
******************************************************************************/
-static bool g_python_plugin_execute_on_binary(GPythonPlugin *plugin, GOpenidaBinary *binary, PluginAction action)
+static bool g_python_plugin_execute_on_binary(GPythonPlugin *plugin, GLoadedBinary *binary, PluginAction action)
{
bool result; /* Bilan à remonter */
PyObject *args; /* Arguments pour l'appel */
diff --git a/plugins/stackvars/stackvars.c b/plugins/stackvars/stackvars.c
index 35f8016..1e18f28 100644
--- a/plugins/stackvars/stackvars.c
+++ b/plugins/stackvars/stackvars.c
@@ -97,7 +97,7 @@ G_MODULE_EXPORT PluginAction get_plugin_action(void)
* *
******************************************************************************/
-G_MODULE_EXPORT bool execute_action_on_binary(GOpenidaBinary *binary, PluginAction action)
+G_MODULE_EXPORT bool execute_action_on_binary(GLoadedBinary *binary, PluginAction action)
{
bool result; /* Bilan à retourner */
GRenderingLine *lines; /* Lignes de rendu */
@@ -108,9 +108,9 @@ G_MODULE_EXPORT bool execute_action_on_binary(GOpenidaBinary *binary, PluginActi
result = false;
- lines = g_openida_binary_get_lines(binary);
+ lines = g_loaded_binary_get_lines(binary);
- format = g_openida_binary_get_format(binary);
+ format = g_loaded_binary_get_format(binary);
routines = g_binary_format_get_routines(G_BIN_FORMAT(format), &routines_count);
for (i = 0; i < routines_count; i++)
diff --git a/plugins/stackvars/stackvars.h b/plugins/stackvars/stackvars.h
index fdd48b5..bf3e42e 100644
--- a/plugins/stackvars/stackvars.h
+++ b/plugins/stackvars/stackvars.h
@@ -42,7 +42,7 @@ G_MODULE_EXPORT bool init_plugin(GObject *);
G_MODULE_EXPORT PluginAction get_plugin_action(void);
/* Exécute une action définie sur un binaire chargé. */
-G_MODULE_EXPORT bool execute_action_on_binary(GOpenidaBinary *, PluginAction);
+G_MODULE_EXPORT bool execute_action_on_binary(GLoadedBinary *, PluginAction);
diff --git a/plugins/theseus/theseus.c b/plugins/theseus/theseus.c
index 5cc2d98..ea119ef 100644
--- a/plugins/theseus/theseus.c
+++ b/plugins/theseus/theseus.c
@@ -30,7 +30,7 @@
/* Traite en premier lieu les adresses marquées "impératives". */
-static bool register_white_list(GOpenidaBinary *);
+static bool register_white_list(GLoadedBinary *);
/* Indique si une ligne peut faire l'objet d'un nouveau suivi. */
static bool can_line_be_followed(const GRenderingLine *);
@@ -42,13 +42,13 @@ static bool can_line_be_processed(const GRenderingLine *);
static void mark_line_as_done(GRenderingLine *, bool);
/* Suit le flot d'exécution à partir d'un point donné. */
-static bool follow_flow_from_line(GOpenidaBinary *, vmpa_t);
+static bool follow_flow_from_line(GLoadedBinary *, vmpa_t);
/* Désassemble une nouvelle instruction à partir d'une adresse. */
-static GRenderingLine *disassemble_target_address(GOpenidaBinary *, GRenderingLine *, vmpa_t);
+static GRenderingLine *disassemble_target_address(GLoadedBinary *, GRenderingLine *, vmpa_t);
/* Insère dans le flux existant les nouvelles lignes crées. */
-static bool insert_new_lines_into_flow(GOpenidaBinary *, GRenderingLine *, GRenderingLine *);
+static bool insert_new_lines_into_flow(GLoadedBinary *, GRenderingLine *, GRenderingLine *);
@@ -140,7 +140,7 @@ G_MODULE_EXPORT PluginAction get_plugin_action(void)
* *
******************************************************************************/
-G_MODULE_EXPORT bool execute_action_on_binary(GOpenidaBinary *binary, PluginAction action)
+G_MODULE_EXPORT bool execute_action_on_binary(GLoadedBinary *binary, PluginAction action)
{
bool result; /* Bilan à retourner */
GRenderingLine *lines; /* Lignes désassemblées */
@@ -153,12 +153,12 @@ G_MODULE_EXPORT bool execute_action_on_binary(GOpenidaBinary *binary, PluginActi
GRenderingLine *iter;
- lines = g_openida_binary_get_lines(binary);
+ lines = g_loaded_binary_get_lines(binary);
- format = g_openida_binary_get_format(binary);
+ format = g_loaded_binary_get_format(binary);
start = g_exe_format_get_entry_point(format);
@@ -173,7 +173,7 @@ G_MODULE_EXPORT bool execute_action_on_binary(GOpenidaBinary *binary, PluginActi
- options = g_openida_binary_get_options(binary);
+ options = g_loaded_binary_get_options(binary);
for (iter = lines; iter != NULL; iter = g_rendering_line_get_next_iter(lines, iter, NULL))
{
@@ -212,7 +212,7 @@ G_MODULE_EXPORT bool execute_action_on_binary(GOpenidaBinary *binary, PluginActi
* *
******************************************************************************/
-static bool register_white_list(GOpenidaBinary *binary)
+static bool register_white_list(GLoadedBinary *binary)
{
bool result; /* Bilan à retourner */
GRenderingLine *lines; /* Lignes désassemblées */
@@ -223,7 +223,7 @@ static bool register_white_list(GOpenidaBinary *binary)
result = true;
- lines = g_openida_binary_get_lines(binary);
+ lines = g_loaded_binary_get_lines(binary);
for (i = 0; i < _white_list_count && result; i++)
{
@@ -327,7 +327,7 @@ static void mark_line_as_done(GRenderingLine *line, bool white)
* *
******************************************************************************/
-static bool follow_flow_from_line(GOpenidaBinary *binary, vmpa_t start)
+static bool follow_flow_from_line(GLoadedBinary *binary, vmpa_t start)
{
bool result; /* Bilan de opérations */
GRenderingLine *lines; /* Lignes désassemblées */
@@ -339,7 +339,7 @@ static bool follow_flow_from_line(GOpenidaBinary *binary, vmpa_t start)
InstructionLinkType type; /* Type de référence */
GRenderingLine *target; /* Ligne visée par la référence*/
- lines = g_openida_binary_get_lines(binary);
+ lines = g_loaded_binary_get_lines(binary);
first = g_rendering_line_find_by_address(lines, NULL, start);
first = g_rendering_line_loop_for_code(first, NULL);
@@ -466,7 +466,7 @@ static bool follow_flow_from_line(GOpenidaBinary *binary, vmpa_t start)
* *
******************************************************************************/
-static GRenderingLine *disassemble_target_address(GOpenidaBinary *binary, GRenderingLine *old, vmpa_t target)
+static GRenderingLine *disassemble_target_address(GLoadedBinary *binary, GRenderingLine *old, vmpa_t target)
{
GRenderingLine *result; /* Lignes en place à renvoyer */
GExeFormat *format; /* Format du binaire fourni */
@@ -482,11 +482,11 @@ static GRenderingLine *disassemble_target_address(GOpenidaBinary *binary, GRende
result = NULL;
- format = g_openida_binary_get_format(binary);
+ format = g_loaded_binary_get_format(binary);
proc = get_arch_processor_from_format(format);
- options = g_openida_binary_get_options(binary);
+ options = g_loaded_binary_get_options(binary);
- data = g_openida_binary_get_data(binary, &length);
+ data = g_loaded_binary_get_data(binary, &length);
old_addr = get_rendering_line_address(old);
if (!g_exe_format_translate_address_into_offset(format, old_addr, &offset))
@@ -532,7 +532,7 @@ static GRenderingLine *disassemble_target_address(GOpenidaBinary *binary, GRende
* *
******************************************************************************/
-static bool insert_new_lines_into_flow(GOpenidaBinary *binary, GRenderingLine *old, GRenderingLine *new)
+static bool insert_new_lines_into_flow(GLoadedBinary *binary, GRenderingLine *old, GRenderingLine *new)
{
bool result; /* Bilan de opérations */
GExeFormat *format; /* Format du binaire fourni */
@@ -551,11 +551,11 @@ static bool insert_new_lines_into_flow(GOpenidaBinary *binary, GRenderingLine *o
GRenderingLine *line; /* Nouvelle ligne de rendu */
GRenderingLine *last; /* Dernière ligne à vérifier */
- format = g_openida_binary_get_format(binary);
+ format = g_loaded_binary_get_format(binary);
proc = get_arch_processor_from_format(format);
- options = g_openida_binary_get_options(binary);
+ options = g_loaded_binary_get_options(binary);
- data = g_openida_binary_get_data(binary, &length);
+ data = g_loaded_binary_get_data(binary, &length);
/* Etendue du bloc de remplacement */
@@ -568,7 +568,7 @@ static bool insert_new_lines_into_flow(GOpenidaBinary *binary, GRenderingLine *o
/* Bourrage nécessaire ? */
- root = g_openida_binary_get_lines_root(binary);
+ root = g_loaded_binary_get_lines_root(binary);
iter = g_rendering_line_find_by_address(*root, NULL, end);
diff --git a/plugins/theseus/theseus.h b/plugins/theseus/theseus.h
index 2fa4ac1..e1a6f36 100644
--- a/plugins/theseus/theseus.h
+++ b/plugins/theseus/theseus.h
@@ -42,7 +42,7 @@ G_MODULE_EXPORT bool init_plugin(GObject *);
G_MODULE_EXPORT PluginAction get_plugin_action(void);
/* Exécute une action définie sur un binaire chargé. */
-G_MODULE_EXPORT bool execute_action_on_binary(GOpenidaBinary *, PluginAction);
+G_MODULE_EXPORT bool execute_action_on_binary(GLoadedBinary *, PluginAction);
diff --git a/src/analysis/Makefile.am b/src/analysis/Makefile.am
index e59b648..b5b345f 100755
--- a/src/analysis/Makefile.am
+++ b/src/analysis/Makefile.am
@@ -16,6 +16,7 @@ libanalysis_la_SOURCES = \
variable.h variable.c
libanalysis_la_LIBADD = \
+ binaries/libanalysisbinaries.la \
decomp/libanalysisdecomp.la \
disass/libanalysisdisass.la
@@ -28,4 +29,4 @@ AM_CPPFLAGS =
AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-SUBDIRS = decomp disass
+SUBDIRS = binaries decomp disass
diff --git a/src/analysis/binaries/Makefile.am b/src/analysis/binaries/Makefile.am
new file mode 100755
index 0000000..f065070
--- /dev/null
+++ b/src/analysis/binaries/Makefile.am
@@ -0,0 +1,18 @@
+
+noinst_LTLIBRARIES = libanalysisbinaries.la
+
+libanalysisbinaries_la_SOURCES = \
+ file.h file.c
+
+libanalysisbinaries_la_LIBADD =
+
+libanalysisbinaries_la_LDFLAGS =
+
+
+INCLUDES = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
+
+AM_CPPFLAGS =
+
+AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
+
+SUBDIRS =
diff --git a/src/analysis/binaries/file.c b/src/analysis/binaries/file.c
new file mode 100644
index 0000000..0be1fd7
--- /dev/null
+++ b/src/analysis/binaries/file.c
@@ -0,0 +1,328 @@
+
+/* OpenIDA - Outil d'analyse de fichiers binaires
+ * file.h - prototypes pour la prise en charge des binaires sous forme de fichier
+ *
+ * Copyright (C) 2012 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 Foobar. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "file.h"
+
+
+#include <string.h>
+
+
+#include "../binary-int.h"
+#include "../../common/extstr.h"
+#include "../../gui/panels/log.h"
+
+
+
+/* Description de fichier binaire (instance) */
+struct _GFileBinary
+{
+ GLoadedBinary parent; /* A laisser en premier */
+
+ char *filename; /* Fichier chargé en mémoire */
+
+};
+
+/* Description de fichier binaire (classe) */
+struct _GFileBinaryClass
+{
+ GLoadedBinaryClass parent; /* A laisser en premier */
+
+};
+
+
+/* Initialise la classe des descriptions de fichier binaire. */
+static void g_file_binary_class_init(GFileBinaryClass *);
+
+/* Initialise une description de fichier binaire. */
+static void g_file_binary_init(GFileBinary *);
+
+/* Procède à la libération totale de la mémoire. */
+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. */
+G_DEFINE_TYPE(GFileBinary, g_file_binary, G_TYPE_LOADED_BINARY);
+
+
+
+/******************************************************************************
+* *
+* Paramètres : klass = classe à initialiser. *
+* *
+* Description : Initialise la classe des descriptions de fichier binaire. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void g_file_binary_class_init(GFileBinaryClass *klass)
+{
+ GObjectClass *object; /* Autre version de la classe */
+
+ object = G_OBJECT_CLASS(klass);
+
+ object->finalize = (GObjectFinalizeFunc)g_file_binary_finalize;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : binary = instance à initialiser. *
+* *
+* Description : Initialise une description de fichier binaire. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void g_file_binary_init(GFileBinary *binary)
+{
+ GLoadedBinary *loaded; /* Version parente */
+
+ loaded = G_LOADED_BINARY(binary);
+
+ loaded->save = (save_binary_fc)g_file_binary_save;
+ loaded->get_filename = (get_binary_filename_fc)g_file_binary_get_filename;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : binary = instance d'objet GLib à traiter. *
+* *
+* Description : Procède à la libération totale de la mémoire. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void g_file_binary_finalize(GFileBinary *binary)
+{
+ gpointer obj_class; /* Classe parente */
+
+ free(binary->filename);
+
+ /* On passe le relai */
+
+ obj_class = g_type_class_peek_parent(G_FILE_BINARY_GET_CLASS(binary));
+
+ G_OBJECT_CLASS(obj_class)->finalize(G_OBJECT(binary));
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : filename = nom du fichier à charger. *
+* *
+* Description : Charge en mémoire le contenu d'un fichier. *
+* *
+* Retour : Adresse de la représentation ou NULL en cas d'échec. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GLoadedBinary *g_file_binary_new_from_file(const char *filename)
+{
+ GFileBinary *result; /* Adresse à retourner */
+ GLoadedBinary *loaded; /* Version parente */
+ char *tmp; /* Nom de fichier modifiable */
+
+ result = g_object_new(G_TYPE_FILE_BINARY, NULL);
+ loaded = G_LOADED_BINARY(result);
+
+ log_variadic_message(LMT_PROCESS, _("Opening '%s' file..."), filename);
+
+ result->filename = strdup(filename);
+
+ tmp = strdup(filename);
+ loaded->format = G_EXE_FORMAT(load_new_format(FMT_EXEC, tmp,
+ &loaded->bin_data, &loaded->bin_length));
+ free(tmp);
+
+ if (loaded->format == NULL)
+ {
+ log_simple_message(LMT_INFO, _("Unknown binary format"));
+ goto lbf_error;
+ }
+
+ switch (g_exe_format_get_target_machine(loaded->format))
+ {
+ case FTM_ARM:
+ log_simple_message(LMT_INFO, _("Detected architecture: ARM"));
+ break;
+ case FTM_DALVIK:
+ log_simple_message(LMT_INFO, _("Detected architecture: Dalvik Virtual Machine"));
+ break;
+ case FTM_JVM:
+ log_simple_message(LMT_INFO, _("Detected architecture: Java Virtual Machine"));
+ break;
+ case FTM_MIPS:
+ log_simple_message(LMT_INFO, _("Detected architecture: Microprocessor without Interlocked Pipeline Stages"));
+ break;
+ case FTM_386:
+ log_simple_message(LMT_INFO, _("Detected architecture: i386"));
+ break;
+ default:
+ log_simple_message(LMT_INFO, _("Unknown architecture"));
+ goto lbf_error;
+ break;
+ }
+
+ loaded->proc = get_arch_processor_from_format(loaded->format);
+
+ return G_LOADED_BINARY(result);
+
+ lbf_error:
+
+ g_object_unref(G_OBJECT(result));
+
+ return NULL;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : context = contexte pour les recherches XPath. *
+* path = chemin d'accès au noeud XML à lire. *
+* *
+* Description : Charge en mémoire le contenu d'un fichier à partir d'XML. *
+* *
+* Retour : Adresse de la représentation ou NULL en cas d'échec. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GLoadedBinary *g_file_binary_new_from_xml(xmlXPathContextPtr context, const char *path)
+{
+ GLoadedBinary *result; /* Adresse à retourner */
+ char *access; /* Chemin pour une sous-config.*/
+ char *filename; /* Chemin du binaire à charger */
+
+ result = NULL;
+
+ /* Chemin du fichier à retrouver */
+
+ access = strdup(path);
+ access = stradd(access, "/Filename");
+
+ filename = get_node_text_value(context, access);
+
+ free(access);
+
+ /* Chargement */
+
+ if (filename != NULL)
+ {
+ result = g_file_binary_new_from_file(filename);
+ free(filename);
+ }
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : binary = élément binaire à traiter. *
+* xdoc = structure XML en cours d'édition. *
+* context = contexte à utiliser pour les recherches. *
+* path = chemin d'accès réservé au binaire. *
+* *
+* Description : Ecrit une sauvegarde du binaire dans un fichier XML. *
+* *
+* Retour : true si l'opération a bien tourné, false sinon. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static bool g_file_binary_save(const GFileBinary *binary, xmlDocPtr xdoc, xmlXPathContextPtr context, const char *path)
+{
+ bool result; /* Bilan à faire remonter */
+ char *access; /* Chemin d'accès à un élément */
+
+ result = true;
+
+ /* Type */
+
+ result &= add_string_attribute_to_node(xdoc, context, path, "type", "file");
+
+ /* Nom du fichier associé */
+
+ access = strdup(path);
+ access = stradd(access, "/Filename");
+
+ result &= add_content_to_node(xdoc, context, access, binary->filename);
+
+ free(access);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : binary = élément binaire à consulter. *
+* full = précise s'il s'agit d'une version longue ou non. *
+* *
+* Description : Fournit le fichier correspondant à l'élément binaire. *
+* *
+* Retour : Nom de fichier avec chemin absolu. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static const char *g_file_binary_get_filename(const GFileBinary *binary, bool full)
+{
+ const char *result; /* Description à retourner */
+
+ if (full)
+ result = binary->filename;
+ else
+ result = strrchr(binary->filename, G_DIR_SEPARATOR) + 1;
+
+ return result;
+
+}
diff --git a/src/analysis/binaries/file.h b/src/analysis/binaries/file.h
new file mode 100644
index 0000000..3bff0a2
--- /dev/null
+++ b/src/analysis/binaries/file.h
@@ -0,0 +1,61 @@
+
+/* OpenIDA - Outil d'analyse de fichiers binaires
+ * file.h - prototypes pour la prise en charge des binaires sous forme de fichier
+ *
+ * Copyright (C) 2012 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 Foobar. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef _ANALYSIS_BINARIES_FILE_H
+#define _ANALYSIS_BINARIES_FILE_H
+
+
+#include <glib-object.h>
+
+
+#include "../binary.h"
+#include "../../common/xml.h"
+
+
+
+#define G_TYPE_FILE_BINARY g_file_binary_get_type()
+#define G_FILE_BINARY(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_file_binary_get_type(), GFileBinary))
+#define G_IS_FILE_BINARY(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_file_binary_get_type()))
+#define G_FILE_BINARY_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE((inst), g_file_binary_get_type(), GFileBinaryIface))
+#define G_FILE_BINARY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_FILE_BINARY, GFileBinaryClass))
+
+
+/* Description de fichier binaire (instance) */
+typedef struct _GFileBinary GFileBinary;
+
+/* Description de fichier binaire (classe) */
+typedef struct _GFileBinaryClass GFileBinaryClass;
+
+
+/* Indique le type défini pour une description de fichier binaire. */
+GType g_file_binary_get_type(void);
+
+/* Charge en mémoire le contenu d'un fichier. */
+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 *);
+
+
+
+#endif /* _ANALYSIS_BINARIES_FILE_H */
diff --git a/src/analysis/binary-int.h b/src/analysis/binary-int.h
new file mode 100644
index 0000000..c9be0bf
--- /dev/null
+++ b/src/analysis/binary-int.h
@@ -0,0 +1,84 @@
+
+/* OpenIDA - Outil d'analyse de fichiers binaires
+ * binary-int.h - prototypes pour la définition interne des binaires
+ *
+ * Copyright (C) 2012 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 Foobar. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef _ANALYSIS_BINARY_INT_H
+#define _ANALYSIS_BINARY_INT_H
+
+
+#include "binary.h"
+
+
+#include "../format/format.h"
+
+
+
+/* Ecrit une sauvegarde du binaire dans un fichier XML. */
+typedef bool (* save_binary_fc) (const GLoadedBinary *, xmlDocPtr, xmlXPathContextPtr, const char *);
+
+/* Fournit le fichier correspondant à l'élément binaire. */
+typedef const char * (* get_binary_filename_fc) (const GLoadedBinary *, bool);
+
+
+/* Description de fichier binaire (instance) */
+struct _GLoadedBinary
+{
+ GObject parent; /* A laisser en premier */
+
+ save_binary_fc save; /* Sauvegarde au format XML */
+ get_binary_filename_fc get_filename; /* Obtention d'une description */
+
+ off_t bin_length; /* Taille des données brutes */
+ bin_t *bin_data; /* Données binaires brutes */
+
+ GExeFormat *format; /* Format du binaire */
+ GArchProcessor *proc; /* Architecture du binaire */
+
+ BinaryPartModel model; /* Modèle de sélection */
+ GBinPart **parts[BPM_COUNT]; /* Parties binaires à analyser */
+ size_t parts_count[BPM_COUNT]; /* Quantité de ces parties */
+
+ GArchInstruction *instrs; /* Instructions d'assemblage */
+ GCodeBuffer *disass_buffer; /* Instructions lisibles */
+ GCodeBuffer **dec_buffers; /* Sources sous forme de texte */
+ size_t decbuf_count; /* Taille des tableaux */
+ size_t defsrc; /* Fichier source principal */
+
+ bool text_display[2]; /* Position et code binaire #1 */
+ bool lines_display; /* Affichage des lignes */
+
+};
+
+/* Description de fichier binaire (classe) */
+struct _GLoadedBinaryClass
+{
+ GObjectClass parent; /* A laisser en premier */
+
+ /* Signaux */
+
+ void (* disassembly_done) (GLoadedBinary *);
+
+};
+
+
+
+#endif /* _ANALYSIS_BINARY_INT_H */
diff --git a/src/analysis/binary.c b/src/analysis/binary.c
index 73070b1..fe8188b 100644
--- a/src/analysis/binary.c
+++ b/src/analysis/binary.c
@@ -24,118 +24,56 @@
#include "binary.h"
-#include <fcntl.h>
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <unistd.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
#include <sys/types.h>
#include <i18n.h>
-#include "line_code.h" /* TODO : supprimer ? */
-#include "line_comment.h" /* TODO : supprimer ? */
-#include "line_prologue.h"
+#include "binary-int.h"
#include "routine.h"
+#include "binaries/file.h"
#include "decomp/decompiler.h"
#include "disass/disassembler.h"
-#include "../common/cpp.h"
#include "../common/extstr.h"
-#include "../debug/break.h"
-#include "../format/format.h"
-#include "../gui/panels/log.h"
-#include "../plugins/pglist.h" /* TODO : supprimer ? */
-
-
-#include "../format/dbg_format.h"
-
-
/* ------------------------ DESASSEMBLAGE DE BINAIRE DIFFERE ------------------------ */
-/* Description de fichier binaire (instance) */
-struct _GOpenidaBinary
-{
- GObject parent; /* A laisser en premier */
-
- char *filename; /* Fichier chargé en mémoire */
-
- off_t bin_length; /* Taille des données brutes */
- bin_t *bin_data; /* Données binaires brutes */
-
- GExeFormat *format; /* Format du binaire */
- GArchProcessor *proc; /* Architecture du binaire */
-
- BinaryPartModel model; /* Modèle de sélection */
- GBinPart **parts[BPM_COUNT]; /* Parties binaires à analyser */
- size_t parts_count[BPM_COUNT]; /* Quantité de ces parties */
-
- GRenderingLine *lines; /* Lignes de rendu en place */
- GRenderingOptions *options; /* Options de désassemblage */
-
- GArchInstruction *instrs; /* Instructions d'assemblage */
- GCodeBuffer *disass_buffer; /* Instructions lisibles */
- GCodeBuffer **dec_buffers; /* Sources sous forme de texte */
- size_t decbuf_count; /* Taille des tableaux */
- size_t defsrc; /* Fichier source principal */
-
- bool text_display[2]; /* Position et code binaire #1 */
- bool lines_display; /* Affichage des lignes */
-
- GBreakGroup **brk_groups; /* Groupes de points d'arrêt */
- size_t brk_count; /* Taille de cette liste */
- GBreakGroup *brk_default; /* Groupe par défaut */
-
-};
-
-/* Description de fichier binaire (classe) */
-struct _GOpenidaBinaryClass
-{
- GObjectClass parent; /* A laisser en premier */
-
- /* Signaux */
-
- void (* disassembly_done) (GOpenidaBinary *);
-
-};
-
/* Initialise la classe des descriptions de fichier binaire. */
-static void g_openida_binary_class_init(GOpenidaBinaryClass *);
+static void g_loaded_binary_class_init(GLoadedBinaryClass *);
/* Initialise une description de fichier binaire. */
-static void g_openida_binary_init(GOpenidaBinary *);
-
-/* Charge en mémoire le contenu d'un fichier. */
-bin_t *map_binary_file(const char *, off_t *);
-
-/* Acquitte la fin d'un désasemblage différé et complet. */
-void ack_completed_disassembly(void/*GDelayedDisassembly*/ *, GOpenidaBinary *);
+static void g_loaded_binary_init(GLoadedBinary *);
+/* Supprime toutes les références externes. */
+static void g_loaded_binary_dispose(GLoadedBinary *);
+/* Procède à la libération totale de la mémoire. */
+static void g_loaded_binary_finalize(GLoadedBinary *);
+/* Charge les parties intéressantes du binaire à partir d'XML. */
+static bool g_loaded_binary_load_parts_from_xml(GLoadedBinary *, xmlXPathContextPtr, const char *);
+/* Ecrit les parties de valeur du binaire dans un fichier XML. */
+static bool g_loaded_binary_save_parts(const GLoadedBinary *, xmlDocPtr, xmlXPathContextPtr, const char *);
-/* ------------------------------ ELEMENTS DE DEBOGAGE ------------------------------ */
+/* Acquitte la fin d'un désasemblage différé et complet. */
+void ack_completed_disassembly(void/*GDelayedDisassembly*/ *, GLoadedBinary *);
-/* Réagit à une nouvelle création de point d'arrêt. */
-static void g_openida_binary_breakpoint_added(GBreakGroup *, GBreakPoint *, GOpenidaBinary *);
-/* Réagit à une suppression de point d'arrêt. */
-static void g_openida_binary_breakpoint_removed(GBreakGroup *, GBreakPoint *, GOpenidaBinary *);
/* Indique le type défini pour une description de fichier binaire. */
-G_DEFINE_TYPE(GOpenidaBinary, g_openida_binary, G_TYPE_OBJECT);
+G_DEFINE_TYPE(GLoadedBinary, g_loaded_binary, G_TYPE_OBJECT);
/******************************************************************************
@@ -150,12 +88,19 @@ G_DEFINE_TYPE(GOpenidaBinary, g_openida_binary, G_TYPE_OBJECT);
* *
******************************************************************************/
-static void g_openida_binary_class_init(GOpenidaBinaryClass *klass)
+static void g_loaded_binary_class_init(GLoadedBinaryClass *klass)
{
+ GObjectClass *object; /* Autre version de la classe */
+
+ object = G_OBJECT_CLASS(klass);
+
+ object->dispose = (GObjectFinalizeFunc/* ! */)g_loaded_binary_dispose;
+ object->finalize = (GObjectFinalizeFunc)g_loaded_binary_finalize;
+
g_signal_new("disassembly-done",
- G_TYPE_OPENIDA_BINARY,
+ G_TYPE_LOADED_BINARY,
G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET(GOpenidaBinaryClass, disassembly_done),
+ G_STRUCT_OFFSET(GLoadedBinaryClass, disassembly_done),
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
@@ -175,133 +120,143 @@ static void g_openida_binary_class_init(GOpenidaBinaryClass *klass)
* *
******************************************************************************/
-static void g_openida_binary_init(GOpenidaBinary *binary)
+static void g_loaded_binary_init(GLoadedBinary *binary)
{
binary->text_display[0] = true;
binary->text_display[1] = true;
binary->lines_display = true;
- /* FIXME : à replacer ailleurs */
- g_openida_binary_add_break_group(binary, _("default"));
-
}
/******************************************************************************
* *
-* Paramètres : filename = nom du fichier à charger. *
+* Paramètres : binary = instance d'objet GLib à traiter. *
* *
-* Description : Charge en mémoire le contenu d'un fichier. *
+* Description : Supprime toutes les références externes. *
* *
-* Retour : Adresse de la représentation ou NULL en cas d'échec. *
+* Retour : - *
* *
* Remarques : - *
* *
******************************************************************************/
-GOpenidaBinary *g_openida_binary_new_from_file(const char *filename)
+static void g_loaded_binary_dispose(GLoadedBinary *binary)
{
- GOpenidaBinary *result; /* Adresse à retourner */
- GPluginModule **pglist; /* Liste de greffons */
- size_t pgcount; /* Taille de cette liste */
- size_t i; /* Boucle de parcours */
-
+ gpointer obj_class; /* Classe parente */
- char *file = strdup(filename);
+ g_object_unref(G_OBJECT(binary->format));
+ g_object_unref(G_OBJECT(binary->proc));
- result = g_object_new(G_TYPE_OPENIDA_BINARY, NULL);
+ /* TODO... */
+ /* On passe le relai */
+ obj_class = g_type_class_peek_parent(G_FILE_BINARY_GET_CLASS(binary));
+ G_OBJECT_CLASS(obj_class)->dispose(G_OBJECT(binary));
- printf("%s\n", filename);
+}
+/******************************************************************************
+* *
+* Paramètres : binary = instance d'objet GLib à traiter. *
+* *
+* Description : Procède à la libération totale de la mémoire. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
- pglist = get_all_plugins_for_action(PGA_FORMAT_MATCHER, &pgcount);
+static void g_loaded_binary_finalize(GLoadedBinary *binary)
+{
+ gpointer obj_class; /* Classe parente */
- if (pgcount > 0)
- {
- printf("===>>>> FOUND :: %d\n", pgcount);
+ /* TODO */
+ /* On passe le relai */
- /*
- for (i = 0; i < pgcount; i++)
- g_plugin_module_execute_action_on_binary(pglist[i], binary, PGA_CODE_PROCESS);
- */
- free(pglist);
+ obj_class = g_type_class_peek_parent(G_FILE_BINARY_GET_CLASS(binary));
- }
+ G_OBJECT_CLASS(obj_class)->finalize(G_OBJECT(binary));
+}
+/******************************************************************************
+* *
+* Paramètres : context = contexte pour les recherches XPath. *
+* path = chemin d'accès au noeud XML à lire. *
+* *
+* Description : Charge en mémoire le contenu d'un fichier à partir d'XML. *
+* *
+* Retour : Adresse de la représentation ou NULL en cas d'échec. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+GLoadedBinary *g_loaded_binary_new_from_xml(xmlXPathContextPtr context, const char *path)
+{
+ GLoadedBinary *result; /* Adresse à retourner */
+ char *type; /* Tupe de binaire à charger */
+ result = NULL;
+ type = get_node_prop_value(context, path, "type");
+ if (strcmp(type, "file") == 0)
+ result = g_loaded_binary_new_from_xml(context, path);
+ free(type);
- log_variadic_message(LMT_PROCESS, _("Opening '%s' file..."), filename);
+ if (result == NULL)
+ return NULL;
- result->filename = strdup(filename);
+ if (!g_loaded_binary_load_parts_from_xml(result, context, path))
+ goto glbnfx_error;
- /*
- result->bin_data = map_binary_file(filename, &result->bin_length);
- if (result->bin_data == NULL) goto lbf_error;
- */
+ return result;
- result->format = G_EXE_FORMAT(load_new_format(FMT_EXEC, file,
- &result->bin_data, &result->bin_length));
- if (result->format == NULL)
- {
- log_simple_message(LMT_INFO, _("Unknown binary format"));
- goto lbf_error;
- }
+ glbnfx_error:
- /* FIXME : à déplacer dans arch/... */
- switch (g_exe_format_get_target_machine(result->format))
- {
- case FTM_ARM:
- log_simple_message(LMT_INFO, _("Detected architecture: ARM"));
- break;
- case FTM_DALVIK:
- log_simple_message(LMT_INFO, _("Detected architecture: Dalvik Virtual Machine"));
- break;
- case FTM_JVM:
- log_simple_message(LMT_INFO, _("Detected architecture: Java Virtual Machine"));
- break;
- case FTM_MIPS:
- log_simple_message(LMT_INFO, _("Detected architecture: Microprocessor without Interlocked Pipeline Stages"));
- break;
- case FTM_386:
- log_simple_message(LMT_INFO, _("Detected architecture: i386"));
- break;
- default:
- log_simple_message(LMT_INFO, _("Unknown architecture"));
- goto lbf_error;
- break;
- }
+ g_object_unref(G_OBJECT(result));
- result->lines = NULL;
+ return NULL;
- result->proc = get_arch_processor_from_format(result->format);
+}
- result->options = g_rendering_options_new(result->format);
- g_rendering_options_show_address(result->options, MRD_BLOCK, true);
- g_rendering_options_show_code(result->options, MRD_BLOCK, true);
+/******************************************************************************
+* *
+* Paramètres : binary = élément binaire à traiter. *
+* xdoc = structure XML en cours d'édition. *
+* context = contexte à utiliser pour les recherches. *
+* path = chemin d'accès réservé au binaire. *
+* *
+* Description : Ecrit une sauvegarde du binaire dans un fichier XML. *
+* *
+* Retour : true si l'opération a bien tourné, false sinon. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
- g_rendering_options_show_address(result->options, MRD_GRAPH, true);
- g_rendering_options_show_code(result->options, MRD_GRAPH, false);
+bool g_loaded_binary_save(const GLoadedBinary *binary, xmlDocPtr xdoc, xmlXPathContextPtr context, const char *path)
+{
+ bool result; /* Bilan à faire remonter */
- return result;
+ result = binary->save(binary, xdoc, context, path);
- lbf_error:
+ /* Parties à désassembler */
- //unload_binary_file(result);
+ result = g_loaded_binary_save_parts(binary, xdoc, context, path);
- return NULL;
+ return result;
}
@@ -311,21 +266,18 @@ GOpenidaBinary *g_openida_binary_new_from_file(const char *filename)
* Paramètres : context = contexte pour les recherches XPath. *
* path = chemin d'accès au noeud XML à lire. *
* *
-* Description : Charge en mémoire le contenu d'un fichier à partir d'XML. *
+* Description : Charge les parties intéressantes du binaire à partir d'XML. *
* *
-* Retour : Adresse de la représentation ou NULL en cas d'échec. *
+* Retour : Bilan de l'opération. *
* *
* Remarques : - *
* *
******************************************************************************/
-GOpenidaBinary *g_openida_binary_new_from_xml(xmlXPathContextPtr context, const char *path)
+static bool g_loaded_binary_load_parts_from_xml(GLoadedBinary *binary, xmlXPathContextPtr context, const char *path)
{
- GOpenidaBinary *result; /* Adresse à retourner */
- char *type; /* Tupe de binaire à charger */
- size_t access_len; /* Taille d'un chemin interne */
+ bool result; /* Bilan à retourner */
char *access; /* Chemin pour une sous-config.*/
- char *filename; /* Chemin du binaire à charger */
xmlXPathObjectPtr xobjects; /* Cible d'une recherche */
int i; /* Boucle de parcours */
GBinPart *part; /* Partie binaire à traiter */
@@ -334,33 +286,6 @@ GOpenidaBinary *g_openida_binary_new_from_xml(xmlXPathContextPtr context, const
result = NULL;
- /* Type */
-
- type = get_node_prop_value(context, path, "type");
-
- printf("###type### %s\n", type);
-
- free(type);
-
- /* Chemin du fichier à retrouver */
-
- access = strdup(path);
- access = stradd(access, "/Filename");
-
- filename = get_node_text_value(context, access);
-
- free(access);
-
- /* Chargement */
-
- if (filename != NULL)
- {
- result = g_openida_binary_new_from_file(filename);
- free(filename);
- }
-
- if (result == NULL) return NULL;
-
/* Parties à désassembler : default */
access = strdup(path);
@@ -376,29 +301,29 @@ GOpenidaBinary *g_openida_binary_new_from_xml(xmlXPathContextPtr context, const
{
g_binary_part_get_values(part, &offset, NULL, NULL);
- if (!g_exe_format_translate_offset_into_address(G_EXE_FORMAT(result->format), offset, &addr))
+ if (!g_exe_format_translate_offset_into_address(G_EXE_FORMAT(binary->format), offset, &addr))
{
g_object_unref(G_OBJECT(part));
continue;
}
- result->parts_count[BPM_DEFAULT]++;
- result->parts[BPM_DEFAULT] = (GBinPart **)realloc(result->parts[BPM_DEFAULT],
- result->parts_count[BPM_DEFAULT] * sizeof(GBinPart *));
+ binary->parts_count[BPM_DEFAULT]++;
+ binary->parts[BPM_DEFAULT] = (GBinPart **)realloc(binary->parts[BPM_DEFAULT],
+ binary->parts_count[BPM_DEFAULT] * sizeof(GBinPart *));
- result->parts[BPM_DEFAULT][result->parts_count[BPM_DEFAULT] - 1] = part;
+ binary->parts[BPM_DEFAULT][binary->parts_count[BPM_DEFAULT] - 1] = part;
}
}
- if(xobjects != NULL) /* FIXME */
+ if(xobjects != NULL)
xmlXPathFreeObject(xobjects);
free(access);
- qsort(result->parts[BPM_DEFAULT], result->parts_count[BPM_DEFAULT],
- sizeof(GBinPart *), g_binary_part_compare);
+ qsort(binary->parts[BPM_DEFAULT], binary->parts_count[BPM_DEFAULT],
+ sizeof(GBinPart *), (__compar_fn_t)g_binary_part_compare);
/* Parties à désassembler : routines */
@@ -415,30 +340,30 @@ GOpenidaBinary *g_openida_binary_new_from_xml(xmlXPathContextPtr context, const
{
g_binary_part_get_values(part, &offset, NULL, NULL);
- if (!g_exe_format_translate_offset_into_address(G_EXE_FORMAT(result->format), offset, &addr))
+ if (!g_exe_format_translate_offset_into_address(G_EXE_FORMAT(binary->format), offset, &addr))
{
g_object_unref(G_OBJECT(part));
continue;
}
else g_binary_part_set_address(part, addr);
- result->parts_count[BPM_ROUTINES]++;
- result->parts[BPM_ROUTINES] = (GBinPart **)realloc(result->parts[BPM_ROUTINES],
- result->parts_count[BPM_ROUTINES] * sizeof(GBinPart *));
+ binary->parts_count[BPM_ROUTINES]++;
+ binary->parts[BPM_ROUTINES] = (GBinPart **)realloc(binary->parts[BPM_ROUTINES],
+ binary->parts_count[BPM_ROUTINES] * sizeof(GBinPart *));
- result->parts[BPM_ROUTINES][result->parts_count[BPM_ROUTINES] - 1] = part;
+ binary->parts[BPM_ROUTINES][binary->parts_count[BPM_ROUTINES] - 1] = part;
}
}
- if(xobjects != NULL) /* FIXME */
+ if(xobjects != NULL)
xmlXPathFreeObject(xobjects);
free(access);
- qsort(result->parts[BPM_ROUTINES], result->parts_count[BPM_ROUTINES],
- sizeof(GBinPart *), g_binary_part_compare);
+ qsort(binary->parts[BPM_ROUTINES], binary->parts_count[BPM_ROUTINES],
+ sizeof(GBinPart *), (__compar_fn_t)g_binary_part_compare);
/* Parties à désassembler : utilisateur */
@@ -455,34 +380,29 @@ GOpenidaBinary *g_openida_binary_new_from_xml(xmlXPathContextPtr context, const
{
g_binary_part_get_values(part, &offset, NULL, NULL);
- if (!g_exe_format_translate_offset_into_address(G_EXE_FORMAT(result->format), offset, &addr))
+ if (!g_exe_format_translate_offset_into_address(G_EXE_FORMAT(binary->format), offset, &addr))
{
g_object_unref(G_OBJECT(part));
continue;
}
- result->parts_count[BPM_USER]++;
- result->parts[BPM_USER] = (GBinPart **)realloc(result->parts[BPM_USER],
- result->parts_count[BPM_USER] * sizeof(GBinPart *));
+ binary->parts_count[BPM_USER]++;
+ binary->parts[BPM_USER] = (GBinPart **)realloc(binary->parts[BPM_USER],
+ binary->parts_count[BPM_USER] * sizeof(GBinPart *));
- result->parts[BPM_USER][result->parts_count[BPM_USER] - 1] = part;
+ binary->parts[BPM_USER][binary->parts_count[BPM_USER] - 1] = part;
}
}
- if(xobjects != NULL) /* FIXME */
+ if(xobjects != NULL)
xmlXPathFreeObject(xobjects);
free(access);
- qsort(result->parts[BPM_USER], result->parts_count[BPM_USER],
- sizeof(GBinPart *), g_binary_part_compare);
-
-
-
-
-
+ qsort(binary->parts[BPM_USER], binary->parts_count[BPM_USER],
+ sizeof(GBinPart *), (__compar_fn_t)g_binary_part_compare);
return result;
@@ -496,7 +416,7 @@ GOpenidaBinary *g_openida_binary_new_from_xml(xmlXPathContextPtr context, const
* context = contexte à utiliser pour les recherches. *
* path = chemin d'accès réservé au binaire. *
* *
-* Description : Ecrit une sauvegarde du binaire dans un fichier XML. *
+* Description : Ecrit les parties de valeur du binaire dans un fichier XML. *
* *
* Retour : true si l'opération a bien tourné, false sinon. *
* *
@@ -504,7 +424,7 @@ GOpenidaBinary *g_openida_binary_new_from_xml(xmlXPathContextPtr context, const
* *
******************************************************************************/
-bool g_openida_binary_save(const GOpenidaBinary *binary, xmlDocPtr xdoc, xmlXPathContextPtr context, const char *path)
+static bool g_loaded_binary_save_parts(const GLoadedBinary *binary, xmlDocPtr xdoc, xmlXPathContextPtr context, const char *path)
{
bool result; /* Bilan à faire remonter */
char *access; /* Chemin d'accès à un élément */
@@ -513,21 +433,6 @@ bool g_openida_binary_save(const GOpenidaBinary *binary, xmlDocPtr xdoc, xmlXPat
result = true;
- /* Type */
-
- result &= add_string_attribute_to_node(xdoc, context, path, "type", "file");
-
- /* Nom du fichier associé */
-
- access = strdup(path);
- access = stradd(access, "/Filename");
-
- result &= add_content_to_node(xdoc, context, access, binary->filename);
-
- free(access);
-
- /* Parties à désassembler */
-
if (binary->parts_count[BPM_DEFAULT] > 0)
{
access = strdup(path);
@@ -590,9 +495,9 @@ bool g_openida_binary_save(const GOpenidaBinary *binary, xmlDocPtr xdoc, xmlXPat
* *
******************************************************************************/
-void g_openida_binary_set_parts(GOpenidaBinary *binary, BinaryPartModel model, GBinPart **parts, size_t count)
+void g_loaded_binary_set_parts(GLoadedBinary *binary, BinaryPartModel model, GBinPart **parts, size_t count)
{
- qsort(parts, count, sizeof(GBinPart *), g_binary_part_compare);
+ qsort(parts, count, sizeof(GBinPart *), (__compar_fn_t)g_binary_part_compare);
binary->parts[model] = parts;
binary->parts_count[model] = count;
@@ -614,7 +519,7 @@ void g_openida_binary_set_parts(GOpenidaBinary *binary, BinaryPartModel model, G
* *
******************************************************************************/
-GBinPart ***g_openida_binary_get_parts(const GOpenidaBinary *binary, BinaryPartModel *model, size_t **count)
+GBinPart ***g_loaded_binary_get_parts(const GLoadedBinary *binary, BinaryPartModel *model, size_t **count)
{
*model = binary->model;
*count = binary->parts_count;
@@ -636,7 +541,7 @@ GBinPart ***g_openida_binary_get_parts(const GOpenidaBinary *binary, BinaryPartM
* *
******************************************************************************/
-void g_openida_binary_analyse(GOpenidaBinary *binary)
+void g_loaded_binary_analyse(GLoadedBinary *binary)
{
GBinPart **parts; /* Parties d'élément binaire */
size_t parts_count; /* Nombre de ces parties */
@@ -660,7 +565,7 @@ void g_openida_binary_analyse(GOpenidaBinary *binary)
else
{
parts = g_exe_format_get_parts(binary->format, &parts_count);
- qsort(parts, parts_count, sizeof(GBinPart *), g_binary_part_compare);
+ qsort(parts, parts_count, sizeof(GBinPart *), (__compar_fn_t)g_binary_part_compare);
}
}
@@ -676,25 +581,7 @@ void g_openida_binary_analyse(GOpenidaBinary *binary)
/******************************************************************************
* *
* Paramètres : binary = élément binaire à consulter. *
-* *
-* Description : Fournit une description humaine d'un élément binaire. *
-* *
-* Retour : Chaîne de caractères humainenement lisible de représentation.*
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-const char *g_openida_binary_to_string(const GOpenidaBinary *binary)
-{
- return binary->filename;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : binary = élément binaire à consulter. *
+* full = précise s'il s'agit d'une version longue ou non. *
* *
* Description : Fournit le fichier correspondant à l'élément binaire. *
* *
@@ -704,9 +591,9 @@ const char *g_openida_binary_to_string(const GOpenidaBinary *binary)
* *
******************************************************************************/
-const char *g_openida_binary_get_filename(const GOpenidaBinary *binary)
+const char *g_loaded_binary_get_filename(const GLoadedBinary *binary, bool full)
{
- return binary->filename;
+ return binary->get_filename(binary, full);
}
@@ -724,7 +611,7 @@ const char *g_openida_binary_get_filename(const GOpenidaBinary *binary)
* *
******************************************************************************/
-bin_t *g_openida_binary_get_data(const GOpenidaBinary *binary, off_t *length)
+bin_t *g_loaded_binary_get_data(const GLoadedBinary *binary, off_t *length)
{
if (length != NULL)
*length = binary->bin_length;
@@ -746,7 +633,7 @@ bin_t *g_openida_binary_get_data(const GOpenidaBinary *binary, off_t *length)
* *
******************************************************************************/
-GExeFormat *g_openida_binary_get_format(const GOpenidaBinary *binary)
+GExeFormat *g_loaded_binary_get_format(const GLoadedBinary *binary)
{
return binary->format;
@@ -757,63 +644,6 @@ GExeFormat *g_openida_binary_get_format(const GOpenidaBinary *binary)
* *
* Paramètres : binary = élément binaire à consulter. *
* *
-* Description : Fournit les options d'affichage définies pour le binaire. *
-* *
-* Retour : Adresse des options d'affichage. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GRenderingOptions *g_openida_binary_get_options(const GOpenidaBinary *binary)
-{
- return binary->options;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : binary = élément binaire à consulter. *
-* *
-* Description : Donne la racine des lignes de rendu issues du désassemblage. *
-* *
-* Retour : Lieu d'enregistrement des lignes issues du désassemblage. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GRenderingLine **g_openida_binary_get_lines_root(const GOpenidaBinary *binary)
-{
- return &binary->lines;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : binary = élément binaire à consulter. *
-* *
-* Description : Fournit les lignes de rendu issues du désassemblage. *
-* *
-* Retour : Lignes issues du désassemblage. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GRenderingLine *g_openida_binary_get_lines(const GOpenidaBinary *binary)
-{
- return binary->lines;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : binary = élément binaire à consulter. *
-* *
* Description : Fournit les instructions issues du désassemblage. *
* *
* Retour : Instructions issues du désassemblage. *
@@ -822,7 +652,7 @@ GRenderingLine *g_openida_binary_get_lines(const GOpenidaBinary *binary)
* *
******************************************************************************/
-GArchInstruction *g_openida_binary_get_instructions(const GOpenidaBinary *binary)
+GArchInstruction *g_loaded_binary_get_instructions(const GLoadedBinary *binary)
{
return binary->instrs;
@@ -841,7 +671,7 @@ GArchInstruction *g_openida_binary_get_instructions(const GOpenidaBinary *binary
* *
******************************************************************************/
-GCodeBuffer *g_openida_binary_get_disassembled_buffer(const GOpenidaBinary *binary)
+GCodeBuffer *g_loaded_binary_get_disassembled_buffer(const GLoadedBinary *binary)
{
return binary->disass_buffer;
@@ -860,7 +690,7 @@ GCodeBuffer *g_openida_binary_get_disassembled_buffer(const GOpenidaBinary *bina
* *
******************************************************************************/
-bool *g_openida_binary_display_addresses_in_text(const GOpenidaBinary *binary)
+bool *g_loaded_binary_display_addresses_in_text(GLoadedBinary *binary)
{
return &binary->text_display[0];
@@ -879,7 +709,7 @@ bool *g_openida_binary_display_addresses_in_text(const GOpenidaBinary *binary)
* *
******************************************************************************/
-bool *g_openida_binary_display_code_in_text(const GOpenidaBinary *binary)
+bool *g_loaded_binary_display_code_in_text(GLoadedBinary *binary)
{
return &binary->text_display[1];
@@ -899,7 +729,7 @@ bool *g_openida_binary_display_code_in_text(const GOpenidaBinary *binary)
* *
******************************************************************************/
-GCodeBuffer *g_openida_binary_get_decompiled_buffer(const GOpenidaBinary *binary, size_t index)
+GCodeBuffer *g_loaded_binary_get_decompiled_buffer(const GLoadedBinary *binary, size_t index)
{
GCodeBuffer *result; /* Tampon à retourner */
@@ -926,7 +756,7 @@ GCodeBuffer *g_openida_binary_get_decompiled_buffer(const GOpenidaBinary *binary
* *
******************************************************************************/
-bool *g_openida_binary_display_decomp_lines(const GOpenidaBinary *binary)
+bool *g_loaded_binary_display_decomp_lines(GLoadedBinary *binary)
{
return &binary->lines_display;
@@ -935,59 +765,6 @@ bool *g_openida_binary_display_decomp_lines(const GOpenidaBinary *binary)
/******************************************************************************
* *
-* Paramètres : filename = nom du fichier à charger. *
-* length = taille des données mises en mémoire. [OUT] *
-* *
-* Description : Charge en mémoire le contenu d'un fichier. *
-* *
-* Retour : Adresse du contenu binaire ou NULL en cas d'échec. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-bin_t *map_binary_file(const char *filename, off_t *length)
-{
- uint8_t *result; /* Données à retourner */
- int fd; /* Fichier ouvert en lecture */
- struct stat info; /* Informations sur le fichier */
- int ret; /* Bilan d'un appel */
-
- fd = open(filename, 0, O_RDONLY);
- if (fd == -1)
- {
- perror("open()");
- return NULL;
- }
-
- ret = fstat(fd, &info);
- if (ret == -1)
- {
- perror("fstat()");
- close(fd);
- return NULL;
- }
-
- *length = info.st_size;
-
- result = (uint8_t *)mmap(NULL, *length, PROT_READ, MAP_PRIVATE, fd, 0);
- if (result == MAP_FAILED)
- {
- perror("mmap()");
- result = NULL;
- }
-
- ret = close(fd);
- if (ret == -1)
- perror("close()");
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
* Paramètres : disass = travail de désassemblage mené à bien. *
* binary = représentation de binaire à l'origine de l'opérat°. *
* *
@@ -999,9 +776,9 @@ bin_t *map_binary_file(const char *filename, off_t *length)
* *
******************************************************************************/
-void ack_completed_disassembly(void/*GDelayedDisassembly*/ *disass, GOpenidaBinary *binary)
+void ack_completed_disassembly(void/*GDelayedDisassembly*/ *disass, GLoadedBinary *binary)
{
- GRenderingLine *line; /* "Première" ligne de rendu */
+ //GRenderingLine *line; /* "Première" ligne de rendu */
size_t i; /* Boucle de parcours */
@@ -1040,196 +817,3 @@ void ack_completed_disassembly(void/*GDelayedDisassembly*/ *disass, GOpenidaBina
g_signal_emit_by_name(binary, "disassembly-done");
}
-
-
-
-/* ---------------------------------------------------------------------------------- */
-/* ELEMENTS DE DEBOGAGE */
-/* ---------------------------------------------------------------------------------- */
-
-
-/******************************************************************************
-* *
-* Paramètres : binary = représentation de binaire à modifier. *
-* name = éventuel nom à associer au groupe. *
-* *
-* Description : Ajoute un nouveau groupe de points d'arrêt au binaire. *
-* *
-* Retour : true si l'opération s'est bien effectuée, false sinon. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-bool g_openida_binary_add_break_group(GOpenidaBinary *binary, const char *name)
-{
- bool result; /* Bilan à faire remonter */
- const char *used; /* Désignation à utiliser */
- size_t tmp_len; /* Longeur maximale à gérer */
- char *tmp; /* Construction temporaire */
- size_t i; /* Boucle de parcours */
- const char *test; /* Nom existant à tester */
-
- result = true;
-
- /* Préparation du nom de scène */
-
- if (name != NULL) used = name;
- else
- {
- tmp_len = strlen(_("Group")) + 1 + SIZE_T_MAXLEN + 1;
- tmp = (char *)calloc(tmp_len, sizeof(char));
-
- snprintf(tmp, tmp_len, "%s %lu", _("Group"), binary->brk_count);
-
- used = tmp;
-
- }
-
- /* Vérification d'unicité */
-
- for (i = 0; i < binary->brk_count && result; i++)
- {
- test = g_break_group_get_name(binary->brk_groups[i]);
-
- if (test != NULL)
- result = (strcmp(used, test) != 0);
-
- }
-
- /* Mise en place finale */
-
- if (result)
- {
- binary->brk_count++;
- binary->brk_groups = (GBreakGroup **)realloc(binary->brk_groups,
- binary->brk_count * sizeof(GBreakGroup *));
-
- binary->brk_groups[i] = g_break_group_new();
-
- g_break_group_set_name(binary->brk_groups[i], used);
-
- if (binary->brk_default == NULL)
- binary->brk_default = binary->brk_groups[i];
-
- g_signal_connect(binary->brk_groups[i], "added",
- G_CALLBACK(g_openida_binary_breakpoint_added), binary);
-
- g_signal_connect(binary->brk_groups[i], "removed",
- G_CALLBACK(g_openida_binary_breakpoint_removed), binary);
-
- }
-
- if (name == NULL) free(tmp);
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : group = ensemble de points d'arrêt intervenant. *
-* point = point d'arrêt à l'origine de la procédure. *
-* binary = représentation de binaire à modifier. *
-* *
-* Description : Réagit à une nouvelle création de point d'arrêt. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_openida_binary_breakpoint_added(GBreakGroup *group, GBreakPoint *point, GOpenidaBinary *binary)
-{
- GRenderingLine *line; /* Ligne à retrouver */
-
- line = g_rendering_line_find_by_address(binary->lines, NULL,
- g_break_point_get_address(point));
-
- if (line != NULL)
- g_rendering_line_toggle_flag(line, RLF_BREAK_POINT);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : group = ensemble de points d'arrêt intervenant. *
-* point = point d'arrêt à l'origine de la procédure. *
-* binary = représentation de binaire à modifier. *
-* *
-* Description : Réagit à une suppression de point d'arrêt. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_openida_binary_breakpoint_removed(GBreakGroup *group, GBreakPoint *point, GOpenidaBinary *binary)
-{
- GRenderingLine *line; /* Ligne à retrouver */
-
- line = g_rendering_line_find_by_address(binary->lines, NULL,
- g_break_point_get_address(point));
-
- if (line != NULL)
- g_rendering_line_toggle_flag(line, RLF_BREAK_POINT);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : binary = représentation de binaire à mettre à jour. *
-* addr = adresse mémoire à faire basculer. *
-* *
-* Description : Ajoute ou supprime un point d'arrêt dans un binaire. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void g_openida_binary_toggle_breakpoint(GOpenidaBinary *binary, vmpa_t addr)
-{
- size_t i; /* Boucle de parcours */
-
- for (i = 0; i < binary->brk_count; i++)
- if (g_break_group_has_address(binary->brk_groups[i], addr))
- {
- g_break_group_toggle_breakpoint(binary->brk_groups[i], addr);
- break;
- }
-
- if (i == binary->brk_count)
- g_break_group_toggle_breakpoint(binary->brk_default, addr);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : binary = représentation de binaire à parcourir. *
-* func = fonction à appeler à chaque point trouvé. *
-* data = éventuelle donnée de l'utilisateur à joindre. *
-* *
-* Description : Parcourt l'ensemble des groupes de points d'arrêt du binaire.*
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void g_openida_binary_for_each_bp_group(GOpenidaBinary *binary, GExtFunc func, gpointer data)
-{
- size_t i; /* Boucle de parcours */
-
- for (i = 0; i < binary->brk_count; i++)
- func(binary, binary->brk_groups[i], data);
-
-}
diff --git a/src/analysis/binary.h b/src/analysis/binary.h
index 63a9e61..7ff9080 100644
--- a/src/analysis/binary.h
+++ b/src/analysis/binary.h
@@ -32,24 +32,23 @@
#include "line.h"
#include "../arch/processor.h"
#include "../common/xml.h"
-#include "../debug/break.h"
#include "../format/executable.h"
#include "../glibext/gcodebuffer.h"
-#define G_TYPE_OPENIDA_BINARY g_openida_binary_get_type()
-#define G_OPENIDA_BINARY(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_openida_binary_get_type(), GOpenidaBinary))
-#define G_IS_OPENIDA_BINARY(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_openida_binary_get_type()))
-#define G_OPENIDA_BINARY_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE((inst), g_openida_binary_get_type(), GOpenidaBinaryIface))
-#define G_OPENIDA_BINARY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_OPENIDA_BINARY, GOpenidaBinaryClass))
+#define G_TYPE_LOADED_BINARY g_loaded_binary_get_type()
+#define G_LOADED_BINARY(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_loaded_binary_get_type(), GLoadedBinary))
+#define G_IS_LOADED_BINARY(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_loaded_binary_get_type()))
+#define G_LOADED_BINARY_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE((inst), g_loaded_binary_get_type(), GLoadedBinaryIface))
+#define G_LOADED_BINARY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_LOADED_BINARY, GLoadedBinaryClass))
/* Description de fichier binaire (instance) */
-typedef struct _GOpenidaBinary GOpenidaBinary;
+typedef struct _GLoadedBinary GLoadedBinary;
/* Description de fichier binaire (classe) */
-typedef struct _GOpenidaBinaryClass GOpenidaBinaryClass;
+typedef struct _GLoadedBinaryClass GLoadedBinaryClass;
/* Modèle de sélection des parties */
@@ -65,78 +64,49 @@ typedef enum _BinaryPartModel
/* Indique le type défini pour une description de fichier binaire. */
-GType g_openida_binary_get_type(void);
-
-/* Charge en mémoire le contenu d'un fichier. */
-GOpenidaBinary *g_openida_binary_new_from_file(const char *);
+GType g_loaded_binary_get_type(void);
/* Charge en mémoire le contenu d'un fichier à partir d'XML. */
-GOpenidaBinary *g_openida_binary_new_from_xml(xmlXPathContextPtr, const char *);
+GLoadedBinary *g_loaded_binary_new_from_xml(xmlXPathContextPtr, const char *);
/* Ecrit une sauvegarde du binaire dans un fichier XML. */
-bool g_openida_binary_save(const GOpenidaBinary *, xmlDocPtr, xmlXPathContextPtr, const char *);
+bool g_loaded_binary_save(const GLoadedBinary *, xmlDocPtr, xmlXPathContextPtr, const char *);
/* Définit les parties de binaire à analyser. */
-void g_openida_binary_set_parts(GOpenidaBinary *, BinaryPartModel, GBinPart **, size_t);
+void g_loaded_binary_set_parts(GLoadedBinary *, BinaryPartModel, GBinPart **, size_t);
/* Fournit les parties de binaire analysées. */
-GBinPart ***g_openida_binary_get_parts(const GOpenidaBinary *, BinaryPartModel *, size_t **);
+GBinPart ***g_loaded_binary_get_parts(const GLoadedBinary *, BinaryPartModel *, size_t **);
/* Lance l'analyse d'un élément binaire chargé. */
-void g_openida_binary_analyse(GOpenidaBinary *);
-
-/* Fournit une description humaine d'un élément binaire. */
-const char *g_openida_binary_to_string(const GOpenidaBinary *);
+void g_loaded_binary_analyse(GLoadedBinary *);
/* Fournit le fichier correspondant à l'élément binaire. */
-const char *g_openida_binary_get_filename(const GOpenidaBinary *);
+const char *g_loaded_binary_get_filename(const GLoadedBinary *, bool);
/* Fournit les détails du contenu binaire chargé en mémoire. */
-bin_t *g_openida_binary_get_data(const GOpenidaBinary *, off_t *);
+bin_t *g_loaded_binary_get_data(const GLoadedBinary *, off_t *);
/* Fournit le format de fichier reconnu dans le contenu binaire. */
-GExeFormat *g_openida_binary_get_format(const GOpenidaBinary *);
-
-/* Fournit les options d'affichage définies pour le binaire. */
-GRenderingOptions *g_openida_binary_get_options(const GOpenidaBinary *);
-
-/* Donne la racine des lignes de rendu issues du désassemblage. */
-GRenderingLine **g_openida_binary_get_lines_root(const GOpenidaBinary *);
-
-/* Fournit les lignes de rendu issues du désassemblage. */
-GRenderingLine *g_openida_binary_get_lines(const GOpenidaBinary *);
+GExeFormat *g_loaded_binary_get_format(const GLoadedBinary *);
/* Fournit les instructions issues du désassemblage. */
-GArchInstruction *g_openida_binary_get_instructions(const GOpenidaBinary *);
+GArchInstruction *g_loaded_binary_get_instructions(const GLoadedBinary *);
/* Fournit le tampon associé au contenu assembleur d'un binaire. */
-GCodeBuffer *g_openida_binary_get_disassembled_buffer(const GOpenidaBinary *);
+GCodeBuffer *g_loaded_binary_get_disassembled_buffer(const GLoadedBinary *);
/* Indique si les adresses doivent apparaître dans le rendu. */
-bool *g_openida_binary_display_addresses_in_text(const GOpenidaBinary *);
+bool *g_loaded_binary_display_addresses_in_text(GLoadedBinary *);
/* Indique si le code doit apparaître dans le rendu. */
-bool *g_openida_binary_display_code_in_text(const GOpenidaBinary *);
+bool *g_loaded_binary_display_code_in_text(GLoadedBinary *);
/* Fournit le tampon associé au contenu d'un fichier source. */
-GCodeBuffer *g_openida_binary_get_decompiled_buffer(const GOpenidaBinary *, size_t);
+GCodeBuffer *g_loaded_binary_get_decompiled_buffer(const GLoadedBinary *, size_t);
/* Indique si les lignes doivent apparaître dans le rendu. */
-bool *g_openida_binary_display_decomp_lines(const GOpenidaBinary *);
-
-
-
-/* ------------------------------ ELEMENTS DE DEBOGAGE ------------------------------ */
-
-
-/* Ajoute un nouveau groupe de points d'arrêt au binaire. */
-bool g_openida_binary_add_break_group(GOpenidaBinary *, const char *);
-
-/* Ajoute ou supprime un point d'arrêt dans un binaire. */
-void g_openida_binary_toggle_breakpoint(GOpenidaBinary *, vmpa_t);
-
-/* Parcourt l'ensemble des groupes de points d'arrêt du binaire. */
-void g_openida_binary_for_each_bp_group(GOpenidaBinary *, GExtFunc, gpointer);
+bool *g_loaded_binary_display_decomp_lines(GLoadedBinary *);
diff --git a/src/analysis/decomp/decompiler.c b/src/analysis/decomp/decompiler.c
index 42dc1ff..8e574c0 100644
--- a/src/analysis/decomp/decompiler.c
+++ b/src/analysis/decomp/decompiler.c
@@ -42,7 +42,7 @@
static void build_decomp_prologue(GCodeBuffer *, const char *);
/* S'assure de la transcription de routines en expressions. */
-static void prepare_all_routines_for_decomp(const GOpenidaBinary *, const char *);
+static void prepare_all_routines_for_decomp(const GLoadedBinary *, const char *);
@@ -127,7 +127,7 @@ static void build_decomp_prologue(GCodeBuffer *buffer, const char *filename)
* *
******************************************************************************/
-static void prepare_all_routines_for_decomp(const GOpenidaBinary *binary, const char *filename)
+static void prepare_all_routines_for_decomp(const GLoadedBinary *binary, const char *filename)
{
GExeFormat *format; /* Format du binaire fourni */
GArchProcessor *proc; /* Architecture du binaire */
@@ -140,7 +140,7 @@ static void prepare_all_routines_for_decomp(const GOpenidaBinary *binary, const
GDecContext *context; /* Contexte pour la décompil. */
GDecInstruction *instr;
- format = g_openida_binary_get_format(binary);
+ format = g_loaded_binary_get_format(binary);
proc = get_arch_processor_from_format(G_EXE_FORMAT(format));
@@ -179,7 +179,7 @@ static void prepare_all_routines_for_decomp(const GOpenidaBinary *binary, const
* *
******************************************************************************/
-GCodeBuffer *decompile_all_from_file(const GOpenidaBinary *binary, const char *filename)
+GCodeBuffer *decompile_all_from_file(const GLoadedBinary *binary, const char *filename)
{
GCodeBuffer *result; /* Tampon constitué à renvoyer */
GExeFormat *format; /* Format du binaire fourni */
@@ -195,7 +195,7 @@ GCodeBuffer *decompile_all_from_file(const GOpenidaBinary *binary, const char *f
- format = g_openida_binary_get_format(binary);
+ format = g_loaded_binary_get_format(binary);
g_binary_format_decompile(G_BIN_FORMAT(format), result, filename);
return result;
diff --git a/src/analysis/decomp/decompiler.h b/src/analysis/decomp/decompiler.h
index 363ad27..5233b74 100644
--- a/src/analysis/decomp/decompiler.h
+++ b/src/analysis/decomp/decompiler.h
@@ -30,7 +30,7 @@
/* Procède à la décompilation des routines d'un fichier donné. */
-GCodeBuffer *decompile_all_from_file(const GOpenidaBinary *, const char *);
+GCodeBuffer *decompile_all_from_file(const GLoadedBinary *, const char *);
diff --git a/src/analysis/disass/disassembler.c b/src/analysis/disass/disassembler.c
index 872dc09..73d75cf 100644
--- a/src/analysis/disass/disassembler.c
+++ b/src/analysis/disass/disassembler.c
@@ -60,7 +60,7 @@ typedef struct _GDelayedDisassembly
{
GDelayedWork parent; /* A laisser en premier */
- const GOpenidaBinary *binary; /* Destinataire final */
+ const GLoadedBinary *binary; /* Destinataire final */
const GExeFormat *format; /* Format du binaire représenté*/
GBinPart **parts; /* Parties binaires à traiter */
@@ -89,7 +89,7 @@ static void g_delayed_disassembly_class_init(GDelayedDisassemblyClass *);
static void g_delayed_disassembly_init(GDelayedDisassembly *);
/* Crée une tâche de désassemblage différé. */
-static GDelayedDisassembly *g_delayed_disassembly_new(const GOpenidaBinary *, GBinPart **, size_t, GCodeBuffer *);
+static GDelayedDisassembly *g_delayed_disassembly_new(const GLoadedBinary *, GBinPart **, size_t, GCodeBuffer *);
/* Assure le désassemblage en différé. */
static void g_delayed_disassembly_process(GDelayedDisassembly *, GtkExtStatusBar *);
@@ -165,14 +165,14 @@ static void g_delayed_disassembly_init(GDelayedDisassembly *disass)
* *
******************************************************************************/
-static GDelayedDisassembly *g_delayed_disassembly_new(const GOpenidaBinary *binary, GBinPart **parts, size_t count, GCodeBuffer *buffer)
+static GDelayedDisassembly *g_delayed_disassembly_new(const GLoadedBinary *binary, GBinPart **parts, size_t count, GCodeBuffer *buffer)
{
GDelayedDisassembly *result; /* Tâche à retourner */
result = g_object_new(G_TYPE_DELAYED_DISASSEMBLY, NULL);
result->binary = binary;
- result->format = g_openida_binary_get_format(binary);
+ result->format = g_loaded_binary_get_format(binary);
result->parts = parts;
result->count = count;
@@ -381,7 +381,7 @@ static void build_disass_prologue(GCodeBuffer *buffer, const char *filename, con
* *
******************************************************************************/
-void disassemble_binary(GOpenidaBinary *binary, GBinPart **parts, size_t parts_count, GArchInstruction **instrs, GCodeBuffer **buffer)
+void disassemble_binary(GLoadedBinary *binary, GBinPart **parts, size_t parts_count, GArchInstruction **instrs, GCodeBuffer **buffer)
{
const uint8_t *data; /* Données binaires brutes */
off_t length; /* Quantité de ces données */
@@ -395,8 +395,8 @@ void disassemble_binary(GOpenidaBinary *binary, GBinPart **parts, size_t parts_c
*buffer = g_code_buffer_new();
- data = g_openida_binary_get_data(binary, &length);
- build_disass_prologue(*buffer, g_openida_binary_get_filename(binary), data, length);
+ data = g_loaded_binary_get_data(binary, &length);
+ build_disass_prologue(*buffer, g_loaded_binary_get_filename(binary, true), data, length);
disass = g_delayed_disassembly_new(binary, parts, parts_count, *buffer);
diff --git a/src/analysis/disass/disassembler.h b/src/analysis/disass/disassembler.h
index 2c5adef..8cca194 100644
--- a/src/analysis/disass/disassembler.h
+++ b/src/analysis/disass/disassembler.h
@@ -31,7 +31,7 @@
/* Procède à la décompilation des routines d'un fichier donné. */
-void disassemble_binary(GOpenidaBinary *, GBinPart **parts, size_t parts_count, GArchInstruction **, GCodeBuffer **);
+void disassemble_binary(GLoadedBinary *, GBinPart **parts, size_t parts_count, GArchInstruction **, GCodeBuffer **);
diff --git a/src/analysis/disass/fetch.c b/src/analysis/disass/fetch.c
index 6bd9795..a1df5e3 100644
--- a/src/analysis/disass/fetch.c
+++ b/src/analysis/disass/fetch.c
@@ -45,7 +45,7 @@
* *
******************************************************************************/
-GArchInstruction *disassemble_binary_parts(const GOpenidaBinary *binary, GBinPart **parts, size_t count, GtkExtStatusBar *statusbar, guint id)
+GArchInstruction *disassemble_binary_parts(const GLoadedBinary *binary, GBinPart **parts, size_t count, GtkExtStatusBar *statusbar, guint id)
{
GArchInstruction *result; /* Liste d'instr. à renvoyer */
GBinFormat *format; /* Format du fichier binaire */
@@ -69,9 +69,9 @@ GArchInstruction *disassemble_binary_parts(const GOpenidaBinary *binary, GBinPar
result = NULL;
- format = G_BIN_FORMAT(g_openida_binary_get_format(binary));
+ format = G_BIN_FORMAT(g_loaded_binary_get_format(binary));
proc = get_arch_processor_from_format(G_EXE_FORMAT(format));
- bin_data = g_openida_binary_get_data(binary, &bin_length);
+ bin_data = g_loaded_binary_get_data(binary, &bin_length);
/* Préparation du suivi de la progression */
diff --git a/src/analysis/disass/fetch.h b/src/analysis/disass/fetch.h
index 09bb584..89c3226 100644
--- a/src/analysis/disass/fetch.h
+++ b/src/analysis/disass/fetch.h
@@ -31,7 +31,7 @@
/* Procède au désassemblage basique d'un contenu binaire. */
-GArchInstruction *disassemble_binary_parts(const GOpenidaBinary *, GBinPart **, size_t, GtkExtStatusBar *, guint);
+GArchInstruction *disassemble_binary_parts(const GLoadedBinary *, GBinPart **, size_t, GtkExtStatusBar *, guint);
diff --git a/src/debug/debugger-int.h b/src/debug/debugger-int.h
index f6f51ad..c978731 100644
--- a/src/debug/debugger-int.h
+++ b/src/debug/debugger-int.h
@@ -56,7 +56,7 @@ struct _GBinaryDebugger
{
GObject parent; /* A laisser en premier */
- GOpenidaBinary *binary; /* Cible à traiter */
+ GLoadedBinary *binary; /* Cible à traiter */
attach_debugger_fc attach; /* Démarre le débogueur */
diff --git a/src/debug/debugger.c b/src/debug/debugger.c
index 73b8719..19f4f65 100644
--- a/src/debug/debugger.c
+++ b/src/debug/debugger.c
@@ -108,7 +108,7 @@ static void g_binary_debugger_init(GBinaryDebugger *debugger)
* *
******************************************************************************/
-GBinaryDebugger *g_new_binary_debugger(DebuggerType type, GOpenidaBinary *binary)
+GBinaryDebugger *g_new_binary_debugger(DebuggerType type, GLoadedBinary *binary)
{
GBinaryDebugger *result;
diff --git a/src/debug/debugger.h b/src/debug/debugger.h
index 7a6459b..e4c9458 100644
--- a/src/debug/debugger.h
+++ b/src/debug/debugger.h
@@ -85,7 +85,7 @@ typedef struct _GBinaryDebuggerClass GBinaryDebuggerClass;
GType g_binary_debugger_get_type(void);
/* Crée un nouveau débogueur. */
-GBinaryDebugger *g_new_binary_debugger(DebuggerType, GOpenidaBinary *);
+GBinaryDebugger *g_new_binary_debugger(DebuggerType, GLoadedBinary *);
/* Démarre une procédure de débogage. */
bool g_binary_debugger_attach(GBinaryDebugger *);
diff --git a/src/debug/jdwp/debugger.c b/src/debug/jdwp/debugger.c
index b416840..d63c068 100644
--- a/src/debug/jdwp/debugger.c
+++ b/src/debug/jdwp/debugger.c
@@ -147,7 +147,7 @@ static void g_java_debugger_init(GJavaDebugger *debugger)
* *
******************************************************************************/
-GBinaryDebugger *g_java_debugger_new(GOpenidaBinary *binary, void *options)
+GBinaryDebugger *g_java_debugger_new(GLoadedBinary *binary, void *options)
{
GBinaryDebugger *result; /* Débogueur à retourner */
diff --git a/src/debug/jdwp/debugger.h b/src/debug/jdwp/debugger.h
index c19a415..69a1545 100644
--- a/src/debug/jdwp/debugger.h
+++ b/src/debug/jdwp/debugger.h
@@ -51,7 +51,7 @@ typedef struct _GJavaDebuggerClass GJavaDebuggerClass;
GType g_java_debugger_get_type(void);
/* Crée un débogueur utilisant un serveur Java distant. */
-GBinaryDebugger *g_java_debugger_new(GOpenidaBinary *, void *);
+GBinaryDebugger *g_java_debugger_new(GLoadedBinary *, void *);
void test_java(void);
diff --git a/src/debug/remgdb/gdb.c b/src/debug/remgdb/gdb.c
index caff762..681ff00 100644
--- a/src/debug/remgdb/gdb.c
+++ b/src/debug/remgdb/gdb.c
@@ -149,7 +149,7 @@ static void g_gdb_debugger_init(GGdbDebugger *debugger)
* *
******************************************************************************/
-GBinaryDebugger *g_gdb_debugger_new(GOpenidaBinary *binary, void *options)
+GBinaryDebugger *g_gdb_debugger_new(GLoadedBinary *binary, void *options)
{
GBinaryDebugger *result; /* Débogueur à retourner */
diff --git a/src/debug/remgdb/gdb.h b/src/debug/remgdb/gdb.h
index 6cda59e..30ee2f0 100644
--- a/src/debug/remgdb/gdb.h
+++ b/src/debug/remgdb/gdb.h
@@ -51,7 +51,7 @@ typedef struct _GGdbDebuggerClass GGdbDebuggerClass;
GType g_gdb_debugger_get_type(void);
/* Crée un débogueur utilisant un serveur GDB distant. */
-GBinaryDebugger *g_gdb_debugger_new(GOpenidaBinary *, void *);
+GBinaryDebugger *g_gdb_debugger_new(GLoadedBinary *, void *);
void test_gdb(void);
diff --git a/src/dialogs/add_shellcode.c b/src/dialogs/add_shellcode.c
index 78bfb9d..65e081b 100644
--- a/src/dialogs/add_shellcode.c
+++ b/src/dialogs/add_shellcode.c
@@ -184,7 +184,7 @@ static void export_assistant_cancel(GtkAssistant *assistant, gpointer data)
static void export_assistant_close(GtkAssistant *assistant, GObject *ref)
{
- GOpenidaBinary *binary; /* Binaire chargé à parcourir */
+ GLoadedBinary *binary; /* Binaire chargé à parcourir */
GExeFormat *format; /* Format du binaire */
GRenderingOptions *options; /* Options d'exportation */
GtkToggleButton *checkbutton; /* Coche à retrouver */
@@ -192,9 +192,9 @@ static void export_assistant_close(GtkAssistant *assistant, GObject *ref)
GtkEntry *entry; /* Zone de saisie */
const gchar *filename; /* Chemin d'accès du fichier */
- //binary = G_OPENIDA_BINARY(g_object_get_data(ref, "binary"));
+ //binary = G_LOADED_BINARY(g_object_get_data(ref, "binary"));
- format = g_openida_binary_get_format(binary);
+ format = g_loaded_binary_get_format(binary);
options = g_rendering_options_new(format);
/* Eléments à afficher */
@@ -285,8 +285,8 @@ static void register_bincode_panel(GtkAssistant *assistant)
/* Choix par défaut */
/*
- binary = G_OPENIDA_BINARY(g_object_get_data(G_OBJECT(assistant), "binary"));
- filename = g_openida_binary_get_filename(binary);
+ binary = G_LOADED_BINARY(g_object_get_data(G_OBJECT(assistant), "binary"));
+ filename = g_loaded_binary_get_filename(binary);
gtk_entry_set_text(GTK_ENTRY(entry), filename);
gtk_entry_append_text(GTK_ENTRY(entry), ".txt");
@@ -611,7 +611,7 @@ static void register_output_panel(GtkAssistant *assistant)
GtkWidget *combobox; /* Sélection du format */
GtkWidget *entry; /* Zone de saisie de texte */
GtkWidget *button; /* Sélection de fichier */
- GOpenidaBinary *binary; /* Binaire chargé à parcourir */
+ GLoadedBinary *binary; /* Binaire chargé à parcourir */
const char *filename; /* Chemin d'accès par défaut */
alignment = qck_create_padded_alignment(8, 8, 8, 8);
@@ -661,8 +661,8 @@ static void register_output_panel(GtkAssistant *assistant)
/* Choix par défaut */
/*
- binary = G_OPENIDA_BINARY(g_object_get_data(G_OBJECT(assistant), "binary"));
- filename = g_openida_binary_get_filename(binary);
+ binary = G_LOADED_BINARY(g_object_get_data(G_OBJECT(assistant), "binary"));
+ filename = g_loaded_binary_get_filename(binary);
gtk_entry_set_text(GTK_ENTRY(entry), filename);
gtk_entry_append_text(GTK_ENTRY(entry), ".txt");
diff --git a/src/dialogs/binparts.c b/src/dialogs/binparts.c
index 054c7bf..14e1422 100644
--- a/src/dialogs/binparts.c
+++ b/src/dialogs/binparts.c
@@ -68,7 +68,7 @@ static void save_current_selection(GtkButton *, GObject *);
static void close_editor(GtkButton *, GtkWidget *);
/* Charge les parties courantes d'un binaire donné. */
-static void load_binary_current_parts(GOpenidaBinary *binary, GObject *ref);
+static void load_binary_current_parts(GLoadedBinary *binary, GObject *ref);
/* Affiche les parties désassemblées par défaut. */
static void load_default_parts(GObject *);
@@ -99,7 +99,7 @@ static void on_part_selection_toggle(GtkCellRendererToggle *, gchar *, GObject *
* *
******************************************************************************/
-GtkWidget *create_sections_dialog(GOpenidaBinary *binary, GtkWindow *parent)
+GtkWidget *create_sections_dialog(GLoadedBinary *binary, GtkWindow *parent)
{
GtkWidget *result; /* Fenêtre à renvoyer */
GObject *ref; /* Espace de référencements */
@@ -345,7 +345,7 @@ static void save_current_selection(GtkButton *button, GObject *ref)
- GOpenidaBinary *binary; /* Binaire à traiter */
+ GLoadedBinary *binary; /* Binaire à traiter */
GExeFormat *format; /* Format associé au binaire */
GArchProcessor *proc; /* Architecture utilisée */
@@ -363,9 +363,9 @@ static void save_current_selection(GtkButton *button, GObject *ref)
off_t offset; /* Position dans le binaire */
- binary = G_OPENIDA_BINARY(g_object_get_data(ref, "binary"));
+ binary = G_LOADED_BINARY(g_object_get_data(ref, "binary"));
- format = g_openida_binary_get_format(binary);
+ format = g_loaded_binary_get_format(binary);
proc = get_arch_processor_from_format(format);
@@ -402,7 +402,7 @@ static void save_current_selection(GtkButton *button, GObject *ref)
}
- g_openida_binary_set_parts(binary, BPM_ROUTINES, parts, parts_count);
+ g_loaded_binary_set_parts(binary, BPM_ROUTINES, parts, parts_count);
@@ -451,7 +451,7 @@ static void close_editor(GtkButton *button, GtkWidget *widget)
* *
******************************************************************************/
-static void load_binary_current_parts(GOpenidaBinary *binary, GObject *ref)
+static void load_binary_current_parts(GLoadedBinary *binary, GObject *ref)
{
GtkTreeModel *store; /* Modèle de représentation */
GBinPart ***list; /* Tableau de parties choisies */
@@ -472,7 +472,7 @@ static void load_binary_current_parts(GOpenidaBinary *binary, GObject *ref)
store = GTK_TREE_MODEL(g_object_get_data(ref, "store"));
- list = g_openida_binary_get_parts(binary, &model, &count);
+ list = g_loaded_binary_get_parts(binary, &model, &count);
for (i = 0; i < (BPM_COUNT - 1 /* TODO*/); i++)
{
@@ -535,7 +535,7 @@ static void load_binary_current_parts(GOpenidaBinary *binary, GObject *ref)
static void load_default_parts(GObject *ref)
{
- GOpenidaBinary *binary; /* Binaire à traiter */
+ GLoadedBinary *binary; /* Binaire à traiter */
GtkTreeStore *store; /* Modèle de gestion */
GExeFormat *format; /* Format associé au binaire */
GArchProcessor *proc; /* Architecture utilisée */
@@ -550,10 +550,10 @@ static void load_default_parts(GObject *ref)
char end[VMPA_MAX_SIZE]; /* Version humainement lisible */
GtkTreeIter iter; /* Point d'insertion */
- binary = G_OPENIDA_BINARY(g_object_get_data(ref, "binary"));
+ binary = G_LOADED_BINARY(g_object_get_data(ref, "binary"));
store = GTK_TREE_STORE(g_object_get_data(ref, "store"));
- format = g_openida_binary_get_format(binary);
+ format = g_loaded_binary_get_format(binary);
proc = get_arch_processor_from_format(format);
parts = g_exe_format_get_parts(format, &parts_count);
@@ -609,7 +609,7 @@ static void load_default_parts(GObject *ref)
static void load_routines_parts(GObject *ref)
{
- GOpenidaBinary *binary; /* Binaire à traiter */
+ GLoadedBinary *binary; /* Binaire à traiter */
GtkTreeStore *store; /* Modèle de gestion */
GExeFormat *format; /* Format associé au binaire */
GArchProcessor *proc; /* Architecture utilisée */
@@ -623,10 +623,10 @@ static void load_routines_parts(GObject *ref)
char end[VMPA_MAX_SIZE]; /* Version humainement lisible */
GtkTreeIter iter; /* Point d'insertion */
- binary = G_OPENIDA_BINARY(g_object_get_data(ref, "binary"));
+ binary = G_LOADED_BINARY(g_object_get_data(ref, "binary"));
store = GTK_TREE_STORE(g_object_get_data(ref, "store"));
- format = g_openida_binary_get_format(binary);
+ format = g_loaded_binary_get_format(binary);
proc = get_arch_processor_from_format(format);
routines = g_binary_format_get_routines(G_BIN_FORMAT(format), &routines_count);
diff --git a/src/dialogs/binparts.h b/src/dialogs/binparts.h
index 0880f85..e21d990 100644
--- a/src/dialogs/binparts.h
+++ b/src/dialogs/binparts.h
@@ -33,7 +33,7 @@
/* Construit la fenêtre de sélection des sections. */
-GtkWidget *create_sections_dialog(GOpenidaBinary *, GtkWindow *);
+GtkWidget *create_sections_dialog(GLoadedBinary *, GtkWindow *);
diff --git a/src/dialogs/export.c b/src/dialogs/export.c
index e514511..317ada4 100644
--- a/src/dialogs/export.c
+++ b/src/dialogs/export.c
@@ -103,7 +103,7 @@ static void register_content_panel(GtkAssistant *);
* *
******************************************************************************/
-void run_export_assistant(GOpenidaBinary *binary, GtkWindow *parent)
+void run_export_assistant(GLoadedBinary *binary, GtkWindow *parent)
{
GtkWidget *assistant; /* Fenêtre à afficher */
GObject *ref; /* Espace de référencement */
@@ -170,7 +170,7 @@ static void export_assistant_close(GtkAssistant *assistant, GObject *ref)
int fd; /* Descripteur de la sortie */
struct _export_data *export; /* Informations à faire suivre */
GtkToggleButton *checkbutton; /* Coche à retrouver */
- GOpenidaBinary *binary; /* Binaire chargé à parcourir */
+ GLoadedBinary *binary; /* Binaire chargé à parcourir */
GCodeBuffer *buffer; /* Tampon de code à traiter */
/* Fichier de sortie */
@@ -206,9 +206,9 @@ static void export_assistant_close(GtkAssistant *assistant, GObject *ref)
/* Programmation de la tâche */
- binary = G_OPENIDA_BINARY(g_object_get_data(ref, "binary"));
+ binary = G_LOADED_BINARY(g_object_get_data(ref, "binary"));
- buffer = g_openida_binary_get_disassembled_buffer(binary);
+ buffer = g_loaded_binary_get_disassembled_buffer(binary);
g_buffer_code_scan(buffer, 0, VMPA_MAX, _("Exporting binary lines..."),
(process_line_fc)export_buffer_line, export);
@@ -277,7 +277,7 @@ static void register_output_panel(GtkAssistant *assistant)
GtkWidget *combobox; /* Sélection du format */
GtkWidget *entry; /* Zone de saisie de texte */
GtkWidget *button; /* Sélection de fichier */
- GOpenidaBinary *binary; /* Binaire chargé à parcourir */
+ GLoadedBinary *binary; /* Binaire chargé à parcourir */
const char *filename; /* Chemin d'accès par défaut */
alignment = qck_create_padded_alignment(8, 8, 8, 8);
@@ -327,8 +327,8 @@ static void register_output_panel(GtkAssistant *assistant)
/* Choix par défaut */
- binary = G_OPENIDA_BINARY(g_object_get_data(G_OBJECT(assistant), "binary"));
- filename = g_openida_binary_get_filename(binary);
+ binary = G_LOADED_BINARY(g_object_get_data(G_OBJECT(assistant), "binary"));
+ filename = g_loaded_binary_get_filename(binary, true);
gtk_entry_set_text(GTK_ENTRY(entry), filename);
gtk_editable_insert_text(GTK_EDITABLE(entry), ".txt", -1, (gint []) { strlen(filename) });
diff --git a/src/dialogs/export.h b/src/dialogs/export.h
index c14d05d..3274b12 100644
--- a/src/dialogs/export.h
+++ b/src/dialogs/export.h
@@ -30,7 +30,7 @@
/* Crée et affiche un assistant d'aide à l'exportation. */
-void run_export_assistant(GOpenidaBinary *, GtkWindow *);
+void run_export_assistant(GLoadedBinary *, GtkWindow *);
diff --git a/src/dialogs/plugins.c b/src/dialogs/plugins.c
index b5e045b..e74296e 100644
--- a/src/dialogs/plugins.c
+++ b/src/dialogs/plugins.c
@@ -47,7 +47,7 @@
* *
******************************************************************************/
-GtkWidget *create_plugins_selection_dialog(GOpenidaBinary *binary, GtkWindow *parent)
+GtkWidget *create_plugins_selection_dialog(GLoadedBinary *binary, GtkWindow *parent)
{
GtkWidget *result; /* Fenêtre à renvoyer */
GObject *ref; /* Espace de référencements */
@@ -146,7 +146,6 @@ GtkWidget *create_plugins_selection_dialog(GOpenidaBinary *binary, GtkWindow *pa
button7 = gtk_button_new();
gtk_widget_show(button7);
gtk_container_add(GTK_CONTAINER(vbuttonbox1), button7);
- GTK_WIDGET_SET_FLAGS(button7, GTK_CAN_DEFAULT);
image3 = gtk_image_new_from_stock("gtk-add", GTK_ICON_SIZE_BUTTON);
gtk_widget_show(image3);
@@ -155,7 +154,6 @@ GtkWidget *create_plugins_selection_dialog(GOpenidaBinary *binary, GtkWindow *pa
button8 = gtk_button_new();
gtk_widget_show(button8);
gtk_container_add(GTK_CONTAINER(vbuttonbox1), button8);
- GTK_WIDGET_SET_FLAGS(button8, GTK_CAN_DEFAULT);
image4 = gtk_image_new_from_stock("gtk-remove", GTK_ICON_SIZE_BUTTON);
gtk_widget_show(image4);
@@ -174,7 +172,6 @@ GtkWidget *create_plugins_selection_dialog(GOpenidaBinary *binary, GtkWindow *pa
button9 = gtk_button_new();
gtk_widget_show(button9);
gtk_container_add(GTK_CONTAINER(vbuttonbox2), button9);
- GTK_WIDGET_SET_FLAGS(button9, GTK_CAN_DEFAULT);
image5 = gtk_image_new_from_stock("gtk-go-up", GTK_ICON_SIZE_BUTTON);
gtk_widget_show(image5);
@@ -183,7 +180,6 @@ GtkWidget *create_plugins_selection_dialog(GOpenidaBinary *binary, GtkWindow *pa
button10 = gtk_button_new();
gtk_widget_show(button10);
gtk_container_add(GTK_CONTAINER(vbuttonbox2), button10);
- GTK_WIDGET_SET_FLAGS(button10, GTK_CAN_DEFAULT);
image6 = gtk_image_new_from_stock("gtk-go-down", GTK_ICON_SIZE_BUTTON);
gtk_widget_show(image6);
@@ -276,7 +272,6 @@ GtkWidget *create_plugins_selection_dialog(GOpenidaBinary *binary, GtkWindow *pa
button1 = gtk_button_new();
gtk_widget_show(button1);
gtk_container_add(GTK_CONTAINER(hbuttonbox1), button1);
- GTK_WIDGET_SET_FLAGS(button1, GTK_CAN_DEFAULT);
alignment1 = gtk_alignment_new(0.5, 0.5, 0, 0);
gtk_widget_show(alignment1);
@@ -297,7 +292,6 @@ GtkWidget *create_plugins_selection_dialog(GOpenidaBinary *binary, GtkWindow *pa
button2 = gtk_button_new();
gtk_widget_show(button2);
gtk_container_add(GTK_CONTAINER(hbuttonbox1), button2);
- GTK_WIDGET_SET_FLAGS(button2, GTK_CAN_DEFAULT);
alignment2 = gtk_alignment_new(0.5, 0.5, 0, 0);
gtk_widget_show(alignment2);
diff --git a/src/dialogs/plugins.h b/src/dialogs/plugins.h
index f0ea164..32901fb 100644
--- a/src/dialogs/plugins.h
+++ b/src/dialogs/plugins.h
@@ -33,7 +33,7 @@
/* Construit la fenêtre de sélection des sections. */
-GtkWidget *create_plugins_selection_dialog(GOpenidaBinary *, GtkWindow *);
+GtkWidget *create_plugins_selection_dialog(GLoadedBinary *, GtkWindow *);
diff --git a/src/editor.c b/src/editor.c
index 54149ff..3c861d1 100644
--- a/src/editor.c
+++ b/src/editor.c
@@ -119,7 +119,7 @@ void update_debug_menu_items(GObject *, gboolean);
static void on_dock_item_switch(GtkDockPanel *, GtkWidget *, GObject *);
/* Met en concordance les menus avec l'édition courante. */
-static void refresh_editor_menus(GObject *, GOpenidaBinary *, GtkBinView *);
+static void refresh_editor_menus(GObject *, GLoadedBinary *, GtkBinView *);
@@ -681,10 +681,10 @@ void mcb_open_recent_project(GtkMenuItem *menuitem, GObject *ref)
static void mcb_binary_select_parts(GtkMenuItem *menuitem, GObject *ref)
{
- GOpenidaBinary *binary; /* Binaire courant à l'écran */
+ GLoadedBinary *binary; /* Binaire courant à l'écran */
GtkWidget *dialog; /* Boîte de dialogue à montrer */
- binary = G_OPENIDA_BINARY(g_object_get_data(ref, "current_binary"));
+ binary = G_LOADED_BINARY(g_object_get_data(ref, "current_binary"));
dialog = create_sections_dialog(binary, GTK_WINDOW(ref));
gtk_widget_show(dialog);
@@ -707,10 +707,10 @@ static void mcb_binary_select_parts(GtkMenuItem *menuitem, GObject *ref)
static void mcb_binary_select_plugins(GtkMenuItem *menuitem, GObject *ref)
{
- GOpenidaBinary *binary; /* Binaire courant à l'écran */
+ GLoadedBinary *binary; /* Binaire courant à l'écran */
GtkWidget *dialog; /* Boîte de dialogue à montrer */
- binary = G_OPENIDA_BINARY(g_object_get_data(ref, "current_binary"));
+ binary = G_LOADED_BINARY(g_object_get_data(ref, "current_binary"));
dialog = create_plugins_selection_dialog(binary, GTK_WINDOW(ref));
gtk_widget_show(dialog);
@@ -723,10 +723,10 @@ static void mcb_binary_select_plugins(GtkMenuItem *menuitem, GObject *ref)
void debugger_stopped_cb(GBinaryDebugger *debugger, uint64_t last, uint64_t cur, gpointer data)
{
-
+#if 0
GObject *ref;
- GOpenidaBinary *binary;
+ GLoadedBinary *binary;
GRenderingLine *line;
@@ -744,7 +744,7 @@ void debugger_stopped_cb(GBinaryDebugger *debugger, uint64_t last, uint64_t cur,
if (last != cur)
{
- line = g_rendering_line_find_by_address(g_openida_binary_get_lines(binary), NULL/* FIXME */, last);
+ line = g_rendering_line_find_by_address(g_loaded_binary_get_lines(binary), NULL/* FIXME */, last);
if (line != NULL)
g_rendering_line_remove_flag(line, RLF_RUNNING_BP);
@@ -754,7 +754,7 @@ void debugger_stopped_cb(GBinaryDebugger *debugger, uint64_t last, uint64_t cur,
printf("bp at 0x%016llx\n", cur);
- line = g_rendering_line_find_by_address(g_openida_binary_get_lines(binary), NULL/* FIXME */, cur);
+ line = g_rendering_line_find_by_address(g_loaded_binary_get_lines(binary), NULL/* FIXME */, cur);
if (line != NULL)
g_rendering_line_add_flag(line, RLF_RUNNING_BP);
@@ -780,7 +780,7 @@ void debugger_stopped_cb(GBinaryDebugger *debugger, uint64_t last, uint64_t cur,
refresh_registers_panel_with_registers(get_panel(PNT_REGISTERS), values, count);
-
+#endif
}
@@ -800,7 +800,7 @@ void debugger_stopped_cb(GBinaryDebugger *debugger, uint64_t last, uint64_t cur,
void mcb_debug_start(GtkCheckMenuItem *menuitem, gpointer data)
{
- GOpenidaBinary *binary; /* Binaire à analyser */
+ GLoadedBinary *binary; /* Binaire à analyser */
GBinaryDebugger *debugger; /* Débogueur offrant l'analyse */
@@ -968,8 +968,8 @@ void update_debug_menu_items(GObject *ref, gboolean stopped)
static void on_dock_item_switch(GtkDockPanel *panel, GtkWidget *widget, GObject *ref)
{
- GOpenidaBinary *old_binary; /* Ancien binaire édité */
- GOpenidaBinary *binary; /* Binaire en cours d'édition */
+ GLoadedBinary *old_binary; /* Ancien binaire édité */
+ GLoadedBinary *binary; /* Binaire en cours d'édition */
if (GTK_IS_SCROLLED_WINDOW(widget))
widget = gtk_bin_get_child(GTK_BIN(widget));
@@ -981,7 +981,7 @@ static void on_dock_item_switch(GtkDockPanel *panel, GtkWidget *widget, GObject
{
/* Changement de binaire ? */
- old_binary = G_OPENIDA_BINARY(g_object_get_data(ref, "current_binary"));
+ old_binary = G_LOADED_BINARY(g_object_get_data(ref, "current_binary"));
binary = gtk_view_panel_get_binary(GTK_VIEW_PANEL(widget));
if (old_binary != binary)
@@ -1015,7 +1015,7 @@ static void on_dock_item_switch(GtkDockPanel *panel, GtkWidget *widget, GObject
* *
******************************************************************************/
-static void refresh_editor_menus(GObject *ref, GOpenidaBinary *binary, GtkBinView *view)
+static void refresh_editor_menus(GObject *ref, GLoadedBinary *binary, GtkBinView *view)
{
#if 0
GtkCheckMenuItem *menuitem; /* Menu à coche à traiter */
diff --git a/src/graph/layout.c b/src/graph/layout.c
index 21f7454..f8afad6 100644
--- a/src/graph/layout.c
+++ b/src/graph/layout.c
@@ -124,7 +124,7 @@ bool build_graph_view(GtkGraphView *view, GtkViewPanel **views, size_t count)
static char *complete_graph_links(const GtkGraphView *view, GtkViewPanel **views, size_t count, char *desc)
{
- GOpenidaBinary *binary; /* Binaire rattaché aux vues */
+ GLoadedBinary *binary; /* Binaire rattaché aux vues */
GArchInstruction *instrs; /* Instructions pour assembleur*/
GBufferView *buffer; /* Tampon d'une partie de code */
vmpa_t end; /* Adresse finale du tampon */
@@ -143,7 +143,7 @@ static char *complete_graph_links(const GtkGraphView *view, GtkViewPanel **views
return desc;
binary = gtk_view_panel_get_binary(views[0]);
- instrs = g_openida_binary_get_instructions(binary);
+ instrs = g_loaded_binary_get_instructions(binary);
for (i = 0; i < count; i++)
{
diff --git a/src/gtkext/easygtk.c b/src/gtkext/easygtk.c
index 5218381..510c74f 100644
--- a/src/gtkext/easygtk.c
+++ b/src/gtkext/easygtk.c
@@ -334,7 +334,7 @@ GtkWidget *qck_create_button(GObject *object, const char *name, const char *capt
GtkWidget *result; /* Résultat à renvoyer */
result = gtk_button_new_with_label(caption);
- GTK_WIDGET_SET_FLAGS(result, GTK_CAN_DEFAULT);
+ gtk_widget_set_can_default(result, TRUE);
if (G_IS_OBJECT(object) && name != NULL)
{
@@ -373,7 +373,7 @@ GtkWidget *qck_create_button_from_stock(GObject *object, const char *name, const
GtkWidget *result; /* Résultat à renvoyer */
result = gtk_button_new_from_stock(stock);
- GTK_WIDGET_SET_FLAGS(result, GTK_CAN_DEFAULT);
+ gtk_widget_set_can_default(result, TRUE);
if (G_IS_OBJECT(object) && name != NULL)
{
@@ -413,7 +413,7 @@ GtkWidget *qck_create_button_with_img(GObject *object, const char *name, const c
GtkWidget *render; /* Image à ajouter au bouton */
result = gtk_button_new();
- GTK_WIDGET_SET_FLAGS(result, GTK_CAN_DEFAULT);
+ gtk_widget_set_can_default(result, TRUE);
render = gtk_image_new_from_stock(image, GTK_ICON_SIZE_BUTTON);
gtk_widget_show(render);
diff --git a/src/gtkext/gtkbinview-int.h b/src/gtkext/gtkbinview-int.h
index 94d406f..7091e15 100644
--- a/src/gtkext/gtkbinview-int.h
+++ b/src/gtkext/gtkbinview-int.h
@@ -48,7 +48,7 @@ struct _GtkBinView
{
GtkViewPanel parent; /* A laisser en premier */
- GOpenidaBinary *binary; /* Contenu binaire affiché */
+ GLoadedBinary *binary; /* Contenu binaire affiché */
GRenderingLine *lines; /* Contenu à représenter */
GRenderingLine *last; /* Dernière ligne associée */
diff --git a/src/gtkext/gtkbinview.c b/src/gtkext/gtkbinview.c
index a1657b3..2fe88ad 100644
--- a/src/gtkext/gtkbinview.c
+++ b/src/gtkext/gtkbinview.c
@@ -39,7 +39,7 @@ typedef struct _bv_loading_ack
/* Prend acte de l'association d'un binaire chargé. */
-static void gtk_bin_view_attach_binary(GtkBinView *, GOpenidaBinary *);
+static void gtk_bin_view_attach_binary(GtkBinView *, GLoadedBinary *);
/* Prend note de la fin d'une construction d'une visualisation. */
static void ack_loaded_lines_for_bin_view(GtkBinView *, bv_loading_ack *);
@@ -137,7 +137,7 @@ GtkWidget* gtk_binview_new(void)
* *
******************************************************************************/
-static void gtk_bin_view_attach_binary(GtkBinView *view, GOpenidaBinary *binary)
+static void gtk_bin_view_attach_binary(GtkBinView *view, GLoadedBinary *binary)
{
bv_loading_ack ack; /* Informations d'acquitement */
@@ -147,8 +147,10 @@ static void gtk_bin_view_attach_binary(GtkBinView *view, GOpenidaBinary *binary)
g_signal_connect(view, "lines-set", G_CALLBACK(ack_loaded_lines_for_bin_view), &ack);
+ /*
gtk_bin_view_set_rendering_lines(view, binary,
- g_openida_binary_get_lines(binary), NULL);
+ g_loaded_binary_get_lines(binary), NULL);
+ */
/* Attente de la fin de construction */
g_mutex_lock(ack.mutex);
@@ -233,7 +235,7 @@ void gtk_bin_view_show_border(GtkBinView *view, bool show)
* *
******************************************************************************/
-void gtk_bin_view_set_rendering_lines(GtkBinView *view, GOpenidaBinary *binary, GRenderingLine *lines, GRenderingLine *last)
+void gtk_bin_view_set_rendering_lines(GtkBinView *view, GLoadedBinary *binary, GRenderingLine *lines, GRenderingLine *last)
{
view->binary = binary;
diff --git a/src/gtkext/gtkbinview.h b/src/gtkext/gtkbinview.h
index b6027a6..165f423 100644
--- a/src/gtkext/gtkbinview.h
+++ b/src/gtkext/gtkbinview.h
@@ -57,7 +57,7 @@ void gtk_bin_view_show_border(GtkBinView *, bool);
/* Définit les lignes à associer à la représentation. */
-void gtk_bin_view_set_rendering_lines(GtkBinView *, GOpenidaBinary *, GRenderingLine *, GRenderingLine *);
+void gtk_bin_view_set_rendering_lines(GtkBinView *, GLoadedBinary *, GRenderingLine *, GRenderingLine *);
/* Fournit la liste des lignes associées à la représentation. */
GRenderingLine *gtk_bin_view_get_lines(const GtkBinView *);
diff --git a/src/gtkext/gtkblockview.c b/src/gtkext/gtkblockview.c
index cd2d99d..398856f 100644
--- a/src/gtkext/gtkblockview.c
+++ b/src/gtkext/gtkblockview.c
@@ -53,7 +53,7 @@ static void gtk_block_view_class_init(GtkBlockViewClass *);
static void gtk_block_view_init(GtkBlockView *);
/* Prend acte de l'association d'un binaire chargé. */
-static void gtk_block_view_attach_binary(GtkBlockView *, GOpenidaBinary *, bool *, bool *);
+static void gtk_block_view_attach_binary(GtkBlockView *, GLoadedBinary *, bool *, bool *);
@@ -145,11 +145,11 @@ GtkWidget *gtk_block_view_new(void)
* *
******************************************************************************/
-static void gtk_block_view_attach_binary(GtkBlockView *view, GOpenidaBinary *binary, bool *addr, bool *code)
+static void gtk_block_view_attach_binary(GtkBlockView *view, GLoadedBinary *binary, bool *addr, bool *code)
{
GCodeBuffer *buffer; /* Tampon par défaut */
- buffer = g_openida_binary_get_disassembled_buffer(binary);
+ buffer = g_loaded_binary_get_disassembled_buffer(binary);
gtk_buffer_view_attach_buffer(GTK_BUFFER_VIEW(view), g_buffer_view_new(buffer), addr, code);
diff --git a/src/gtkext/gtkdockpanel.c b/src/gtkext/gtkdockpanel.c
index 24e99eb..79a4a0e 100644
--- a/src/gtkext/gtkdockpanel.c
+++ b/src/gtkext/gtkdockpanel.c
@@ -67,7 +67,7 @@ static void on_dock_item_content_changed(GDockItem *, GtkWidget *, GtkWidget *,
static void _gtk_dock_panel_remove_item(GtkDockPanel *, GDockItem *, GtkWidget *);
/* Met à jour le titre du support de panneaux dockables. */
-static gboolean gtk_dock_panel_update_title(GtkNotebook *, GtkNotebookPage *, guint, gpointer);
+static gboolean gtk_dock_panel_update_title(GtkNotebook *, gpointer *, guint, gpointer);
@@ -742,7 +742,7 @@ static void _gtk_dock_panel_remove_item(GtkDockPanel *dpanel, GDockItem *ditem,
* *
******************************************************************************/
-static gboolean gtk_dock_panel_update_title(GtkNotebook *notebook, GtkNotebookPage *page, guint index, gpointer data)
+static gboolean gtk_dock_panel_update_title(GtkNotebook *notebook, gpointer *page, guint index, gpointer data)
{
GDockItem *ditem; /* Elément nouvellement actif */
const gchar *desc; /* Description à afficher */
diff --git a/src/gtkext/gtkdockstation.c b/src/gtkext/gtkdockstation.c
index a91998e..ba17788 100644
--- a/src/gtkext/gtkdockstation.c
+++ b/src/gtkext/gtkdockstation.c
@@ -40,7 +40,7 @@ static void gtk_dock_station_class_init(GtkDockStationClass *);
static void gtk_dock_station_init(GtkDockStation *);
/* Met à jour le titre du support de panneaux concentrés. */
-static gboolean gtk_dock_station_switch_panel(GtkNotebook *, GtkNotebookPage *, guint, gpointer);
+static gboolean gtk_dock_station_switch_panel(GtkNotebook *, gpointer *, guint, gpointer);
@@ -173,7 +173,7 @@ GtkWidget *gtk_dock_station_new(void)
* *
******************************************************************************/
-static gboolean gtk_dock_station_switch_panel(GtkNotebook *notebook, GtkNotebookPage *page, guint index, gpointer data)
+static gboolean gtk_dock_station_switch_panel(GtkNotebook *notebook, gpointer *page, guint index, gpointer data)
{
GtkWidget *widget; /* Panneau concerné */
char *caption; /* Texte à redonner */
diff --git a/src/gtkext/gtkgraphview.c b/src/gtkext/gtkgraphview.c
index 8366c1f..6ce6060 100644
--- a/src/gtkext/gtkgraphview.c
+++ b/src/gtkext/gtkgraphview.c
@@ -87,7 +87,7 @@ static void gtk_graph_view_scroll(GtkGraphView *);
static void gtk_graph_view_reset(GtkGraphView *);
/* Liste d'éléments du graphique à placer. */
-static GtkViewPanel **gtk_graph_view_load_nodes(GtkGraphView *, GOpenidaBinary *, vmpa_t, vmpa_t);
+static GtkViewPanel **gtk_graph_view_load_nodes(GtkGraphView *, GLoadedBinary *, vmpa_t, vmpa_t);
@@ -319,7 +319,7 @@ static void gtk_graph_view_define_main_address(GtkGraphView *view, vmpa_t addr)
{
gtk_graph_view_reset(view);
- format = g_openida_binary_get_format(GTK_VIEW_PANEL(view)->binary);
+ format = g_loaded_binary_get_format(GTK_VIEW_PANEL(view)->binary);
routines = g_binary_format_get_routines(G_BIN_FORMAT(format), &routines_count);
for (i = 0; i < routines_count; i++)
@@ -533,7 +533,7 @@ static void gtk_graph_view_reset(GtkGraphView *view)
* *
******************************************************************************/
-static GtkViewPanel **gtk_graph_view_load_nodes(GtkGraphView *view, GOpenidaBinary *binary, vmpa_t start, vmpa_t end)
+static GtkViewPanel **gtk_graph_view_load_nodes(GtkGraphView *view, GLoadedBinary *binary, vmpa_t start, vmpa_t end)
{
GtkViewPanel **result; /* Liste à retourner */
size_t *count; /* Nombre d'éléments créés. */
@@ -551,11 +551,11 @@ static GtkViewPanel **gtk_graph_view_load_nodes(GtkGraphView *view, GOpenidaBina
count = &view->childs_count;
*count = 0;
- list = g_openida_binary_get_instructions(binary);
- buffer = g_openida_binary_get_disassembled_buffer(binary);
+ list = g_loaded_binary_get_instructions(binary);
+ buffer = g_loaded_binary_get_disassembled_buffer(binary);
- addr = g_openida_binary_display_addresses_in_text(binary);
- code = g_openida_binary_display_code_in_text(binary);
+ addr = g_loaded_binary_display_addresses_in_text(binary);
+ code = g_loaded_binary_display_code_in_text(binary);
first = start;
last = first;
@@ -718,7 +718,7 @@ static void gtk_graph_view_define_main_address(GtkGraphView *, vmpa_t);
static bool gtk_graph_view_get_address_coordinates(const GtkGraphView *, vmpa_t, gint *, gint *);
/* Définit la liste complète des éléments du futur graphique. */
-static GtkBinView **gtk_graph_view_load_nodes(GtkGraphView *, GOpenidaBinary *, GRenderingLine *, GRenderingLine *);
+static GtkBinView **gtk_graph_view_load_nodes(GtkGraphView *, GLoadedBinary *, GRenderingLine *, GRenderingLine *);
/* Prend note de la fin d'une construction d'une visualisation. */
static void notify_graph_view(GtkBinView *, GtkGraphView *);
@@ -870,7 +870,7 @@ static void gtk_graph_view_define_main_address(GtkGraphView *view, vmpa_t addr)
{
gtk_graph_view_reset(view);
- format = g_openida_binary_get_format(GTK_BIN_VIEW(view)->binary);
+ format = g_loaded_binary_get_format(GTK_BIN_VIEW(view)->binary);
routines = g_binary_format_get_routines(G_BIN_FORMAT(format), &routines_count);
for (i = 0; i < routines_count; i++)
@@ -954,7 +954,7 @@ static bool gtk_graph_view_get_address_coordinates(const GtkGraphView *view, vmp
* *
******************************************************************************/
-static GtkBinView **gtk_graph_view_load_nodes(GtkGraphView *view, GOpenidaBinary *binary, GRenderingLine *first, GRenderingLine *last)
+static GtkBinView **gtk_graph_view_load_nodes(GtkGraphView *view, GLoadedBinary *binary, GRenderingLine *first, GRenderingLine *last)
{
#if 0
GtkBinView **result; /* Liste à retourner */
diff --git a/src/gtkext/gtksourceview.c b/src/gtkext/gtksourceview.c
index 1244bb8..5faed7b 100644
--- a/src/gtkext/gtksourceview.c
+++ b/src/gtkext/gtksourceview.c
@@ -53,7 +53,7 @@ static void gtk_source_view_class_init(GtkSourceViewClass *);
static void gtk_source_view_init(GtkSourceView *);
/* Prend acte de l'association d'un binaire chargé. */
-static void gtk_source_view_attach_binary(GtkSourceView *, GOpenidaBinary *, bool *, bool *);
+static void gtk_source_view_attach_binary(GtkSourceView *, GLoadedBinary *, bool *, bool *);
@@ -145,11 +145,11 @@ GtkWidget *gtk_source_view_new(void)
* *
******************************************************************************/
-static void gtk_source_view_attach_binary(GtkSourceView *view, GOpenidaBinary *binary, bool *addr, bool *code)
+static void gtk_source_view_attach_binary(GtkSourceView *view, GLoadedBinary *binary, bool *addr, bool *code)
{
GCodeBuffer *buffer; /* Tampon par défaut */
- buffer = g_openida_binary_get_decompiled_buffer(binary, -1);
+ buffer = g_loaded_binary_get_decompiled_buffer(binary, -1);
/* FIXME */
if (buffer != NULL)
diff --git a/src/gtkext/gtkviewpanel-int.h b/src/gtkext/gtkviewpanel-int.h
index a4edd06..6e6cbaf 100644
--- a/src/gtkext/gtkviewpanel-int.h
+++ b/src/gtkext/gtkviewpanel-int.h
@@ -34,7 +34,7 @@
/* Prend acte de l'association d'un binaire chargé. */
-typedef void (* attach_binary_fc) (GtkViewPanel *, GOpenidaBinary *, bool *, bool *);
+typedef void (* attach_binary_fc) (GtkViewPanel *, GLoadedBinary *, bool *, bool *);
/* Réagit à la sélection externe d'une adresse. */
typedef void (* define_address_fc) (GtkViewPanel *, vmpa_t);
@@ -57,7 +57,7 @@ struct _GtkViewPanel
GdkGC *gc; /* Contexte graphique du rendu */
bool show_border; /* Affichage d'une bordure ? */
- GOpenidaBinary *binary; /* Binaire à visualiser */
+ GLoadedBinary *binary; /* Binaire à visualiser */
attach_binary_fc attach; /* Association avec un binaire */
define_address_fc define; /* Centrage sur une partie */
diff --git a/src/gtkext/gtkviewpanel.c b/src/gtkext/gtkviewpanel.c
index 326e4d8..2935458 100644
--- a/src/gtkext/gtkviewpanel.c
+++ b/src/gtkext/gtkviewpanel.c
@@ -246,7 +246,7 @@ static void gtk_view_panel_realize(GtkWidget *widget)
guint attributes_mask; /* Masque de prise en compte */
GdkColor white; /* Couleur de fond normale */
- GTK_WIDGET_SET_FLAGS(widget, GTK_REALIZED);
+ gtk_widget_set_realized(widget, TRUE);
attributes.window_type = GDK_WINDOW_CHILD;
attributes.x = widget->allocation.x;
@@ -356,7 +356,7 @@ void gtk_view_panel_show_border(GtkViewPanel *panel, bool show)
* *
******************************************************************************/
-void gtk_view_panel_attach_binary(GtkViewPanel *panel, GOpenidaBinary *binary, bool *addr, bool *code)
+void gtk_view_panel_attach_binary(GtkViewPanel *panel, GLoadedBinary *binary, bool *addr, bool *code)
{
g_object_ref(G_OBJECT(binary));
panel->binary = binary;
@@ -468,7 +468,7 @@ void gtk_view_panel_set_code_display(const GtkViewPanel *panel, bool state)
* *
******************************************************************************/
-GOpenidaBinary *gtk_view_panel_get_binary(const GtkViewPanel *panel)
+GLoadedBinary *gtk_view_panel_get_binary(const GtkViewPanel *panel)
{
return panel->binary;
diff --git a/src/gtkext/gtkviewpanel.h b/src/gtkext/gtkviewpanel.h
index 12b0e44..f1dd2b7 100644
--- a/src/gtkext/gtkviewpanel.h
+++ b/src/gtkext/gtkviewpanel.h
@@ -54,7 +54,7 @@ GType gtk_view_panel_get_type(void);
void gtk_view_panel_show_border(GtkViewPanel *, bool);
/* Associe à un panneau d'affichage un binaire chargé. */
-void gtk_view_panel_attach_binary(GtkViewPanel *, GOpenidaBinary *, bool *, bool *);
+void gtk_view_panel_attach_binary(GtkViewPanel *, GLoadedBinary *, bool *, bool *);
/* Indique si les adresses doivent apparaître dans le rendu. */
bool gtk_view_panel_get_addresses_display(const GtkViewPanel *);
@@ -69,7 +69,7 @@ bool gtk_view_panel_get_code_display(const GtkViewPanel *);
void gtk_view_panel_set_code_display(const GtkViewPanel *, bool);
/* Fournit le binaire associé à la représentation. */
-GOpenidaBinary *gtk_view_panel_get_binary(const GtkViewPanel *);
+GLoadedBinary *gtk_view_panel_get_binary(const GtkViewPanel *);
/* Indique si la vue contient une addrese donnée. */
bool gtk_view_panel_contain_address(const GtkViewPanel *, vmpa_t);
diff --git a/src/gui/editem-int.h b/src/gui/editem-int.h
index 0f25147..8ab0c43 100644
--- a/src/gui/editem-int.h
+++ b/src/gui/editem-int.h
@@ -37,7 +37,7 @@
/* Réagit à un changement du binaire courant. */
-typedef void (* update_item_binary_fc) (GEditorItem *, GOpenidaBinary *);
+typedef void (* update_item_binary_fc) (GEditorItem *, GLoadedBinary *);
/* Réagit à un changement d'affichage principal de contenu. */
typedef void (* update_item_view_fc) (GEditorItem *, GtkViewPanel *);
diff --git a/src/gui/editem.c b/src/gui/editem.c
index 18102f4..1d542a3 100644
--- a/src/gui/editem.c
+++ b/src/gui/editem.c
@@ -125,7 +125,7 @@ GtkWidget *g_editor_item_get_widget(const GEditorItem *item)
* *
******************************************************************************/
-GOpenidaBinary *g_editor_item_get_current_binary(const GEditorItem *item)
+GLoadedBinary *g_editor_item_get_current_binary(const GEditorItem *item)
{
return g_object_get_data(item->ref, "current_binary");
@@ -189,7 +189,7 @@ void register_editor_item(GEditorItem *item)
* *
******************************************************************************/
-void change_editor_items_current_binary(GObject *ref, GOpenidaBinary *binary)
+void change_editor_items_current_binary(GObject *ref, GLoadedBinary *binary)
{
GEditorItem *iter; /* Boucle de parcours */
diff --git a/src/gui/editem.h b/src/gui/editem.h
index 0b9989e..4bb1cd3 100644
--- a/src/gui/editem.h
+++ b/src/gui/editem.h
@@ -60,7 +60,7 @@ GType g_editor_item_get_type(void);
GtkWidget *g_editor_item_get_widget(const GEditorItem *);
/* Fournit le gestionnaire du binaire courant. */
-GOpenidaBinary *g_editor_item_get_current_binary(const GEditorItem *);
+GLoadedBinary *g_editor_item_get_current_binary(const GEditorItem *);
/* Fournit l'affichage de binaire courant. */
GtkViewPanel *g_editor_item_get_current_view(const GEditorItem *);
@@ -74,7 +74,7 @@ GtkViewPanel *g_editor_item_get_current_view(const GEditorItem *);
void register_editor_item(GEditorItem *);
/* Lance une actualisation du fait d'un changement de binaire. */
-void change_editor_items_current_binary(GObject *, GOpenidaBinary *);
+void change_editor_items_current_binary(GObject *, GLoadedBinary *);
/* Lance une actualisation du fait d'un changement de vue. */
void change_editor_items_current_view(GObject *, GtkViewPanel *);
diff --git a/src/gui/menus/binary.c b/src/gui/menus/binary.c
index ac59444..8699c02 100644
--- a/src/gui/menus/binary.c
+++ b/src/gui/menus/binary.c
@@ -89,7 +89,7 @@ GtkWidget *build_menu_binary(GObject *ref, GtkAccelGroup *accgroup, GMenuBar *ba
static void mcb_binary_export(GtkMenuItem *menuitem, GMenuBar *bar)
{
- GOpenidaBinary *binary; /* Edition courante */
+ GLoadedBinary *binary; /* Edition courante */
binary = g_editor_item_get_current_binary(G_EDITOR_ITEM(bar));
diff --git a/src/gui/menus/debug.c b/src/gui/menus/debug.c
index 963c095..666a605 100644
--- a/src/gui/menus/debug.c
+++ b/src/gui/menus/debug.c
@@ -93,10 +93,10 @@ GtkWidget *build_menu_debug(GObject *ref, GtkAccelGroup *accgroup)
static void mcb_debug_start_stop(GtkMenuItem *menuitem, GObject *ref)
{
- GOpenidaBinary *binary; /* Edition courante */
+ GLoadedBinary *binary; /* Edition courante */
GBinaryDebugger *debugger; /* Module prêt à emploi */
- binary = (GOpenidaBinary *)g_object_get_data(ref, "current_binary");
+ binary = (GLoadedBinary *)g_object_get_data(ref, "current_binary");
debugger = NULL;//get_main_debugger_for_binary(get_current_openida_project(), binary);
if (debugger == NULL)
diff --git a/src/gui/menus/project.c b/src/gui/menus/project.c
index 96b411b..dbf61bc 100644
--- a/src/gui/menus/project.c
+++ b/src/gui/menus/project.c
@@ -32,6 +32,7 @@
#include "../editem-int.h"
+#include "../../analysis/binaries/file.h"
#include "../../gtkext/easygtk.h"
@@ -115,7 +116,7 @@ void update_menu_project_for_project(GtkWidget *widget, GStudyProject *project,
GList *list; /* Liste des éléments en place */
GList *iter; /* Boucle de parcours #1 */
size_t count; /* Nombre de binaires attachés */
- GOpenidaBinary **binaries; /* Liste de ces binaires */
+ GLoadedBinary **binaries; /* Liste de ces binaires */
size_t i; /* Boucle de parcours #2 */
const char *desc; /* Description à afficher */
GtkWidget *submenuitem; /* Sous-menu à ajouter */
@@ -138,7 +139,7 @@ void update_menu_project_for_project(GtkWidget *widget, GStudyProject *project,
for (i = 0; i < count; i++)
{
- desc = g_openida_binary_to_string(binaries[i]);
+ desc = g_loaded_binary_get_filename(binaries[i], true);
submenuitem = qck_create_menu_item(NULL, NULL, desc,
G_CALLBACK(mcb_project_remove_binary), project);
@@ -175,7 +176,7 @@ static void mcb_project_add_binary_file(GtkMenuItem *menuitem, GMenuBar *bar)
GtkWidget *dialog; /* Boîte à afficher */
char *dir; /* Répertoire courant */
gchar *filename; /* Nom du fichier à intégrer */
- GOpenidaBinary *binary; /* Représentation chargée */
+ GLoadedBinary *binary; /* Représentation chargée */
dialog = gtk_file_chooser_dialog_new(_("Open a binary file"),
GTK_WINDOW(G_EDITOR_ITEM(bar)->ref),
@@ -204,13 +205,13 @@ static void mcb_project_add_binary_file(GtkMenuItem *menuitem, GMenuBar *bar)
{
filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
- binary = g_openida_binary_new_from_file(filename);
+ binary = g_file_binary_new_from_file(filename);
if (binary != NULL)
{
g_signal_connect(binary, "disassembly-done",
G_CALLBACK(g_study_project_add_loaded_binary), get_current_project());
- g_openida_binary_analyse(binary);
+ g_loaded_binary_analyse(binary);
}
g_free(filename);
@@ -237,9 +238,9 @@ static void mcb_project_add_binary_file(GtkMenuItem *menuitem, GMenuBar *bar)
static void mcb_project_remove_binary(GtkMenuItem *menuitem, GStudyProject *project)
{
- GOpenidaBinary *binary; /* Binaire à retirer */
+ GLoadedBinary *binary; /* Binaire à retirer */
- binary = G_OPENIDA_BINARY(g_object_get_data(G_OBJECT(menuitem), "binary"));
+ binary = G_LOADED_BINARY(g_object_get_data(G_OBJECT(menuitem), "binary"));
g_study_project_detach_binary(project, binary);
g_object_unref(G_OBJECT(binary));
diff --git a/src/gui/menus/view.c b/src/gui/menus/view.c
index e0e7cc4..748df9f 100644
--- a/src/gui/menus/view.c
+++ b/src/gui/menus/view.c
@@ -178,7 +178,7 @@ static void mcb_view_change_support(GtkRadioMenuItem *menuitem, GMenuBar *bar)
BinaryView view; /* Nouvelle vue à présenter */
GtkViewPanel *vpanel; /* Afficheur effectif de code */
GtkWidget *station; /* Base du remplacement */
- GOpenidaBinary *binary; /* Edition courante */
+ GLoadedBinary *binary; /* Edition courante */
GtkWidget *scroll; /* Nouveau support à utiliser */
/* On ne traite qu'une seule fois ! */
diff --git a/src/gui/panels/symbols.c b/src/gui/panels/symbols.c
index aea90fe..6cc391f 100644
--- a/src/gui/panels/symbols.c
+++ b/src/gui/panels/symbols.c
@@ -46,7 +46,7 @@ struct _GSymbolsPanel
GtkTreeView *treeview; /* Composant d'affichage */
GtkTreeStore *store; /* Modèle de gestion */
- GOpenidaBinary *binary; /* Binaire à prendre en compte */
+ GLoadedBinary *binary; /* Binaire à prendre en compte */
};
@@ -84,7 +84,7 @@ static void g_symbols_panel_init(GSymbolsPanel *);
static void on_symbols_selection_change(GtkTreeSelection *, GSymbolsPanel *);
/* Réagit à un changement d'affichage principal de contenu. */
-void change_symbols_panel_current_binary(GSymbolsPanel *, GOpenidaBinary *);
+void change_symbols_panel_current_binary(GSymbolsPanel *, GLoadedBinary *);
@@ -383,7 +383,7 @@ static void on_symbols_selection_change(GtkTreeSelection *selection, GSymbolsPan
* *
******************************************************************************/
-void change_symbols_panel_current_binary(GSymbolsPanel *panel, GOpenidaBinary *binary)
+void change_symbols_panel_current_binary(GSymbolsPanel *panel, GLoadedBinary *binary)
{
GtkToggleToolButton *button; /* Mode de représentation */
@@ -437,7 +437,7 @@ static void reload_symbols_for_new_list_view(GSymbolsPanel *panel)
char tmp[VMPA_MAX_SIZE]; /* Version humainement lisible */
GtkTreeIter iter; /* Point d'insertion */
- format = g_openida_binary_get_format(panel->binary);
+ format = g_loaded_binary_get_format(panel->binary);
routines = g_binary_format_get_routines(G_BIN_FORMAT(format), &routines_count);
qsort(routines, routines_count, sizeof(GBinRoutine *), (__compar_fn_t)g_binary_routine_rcompare);
@@ -590,7 +590,7 @@ static void reload_symbols_for_new_tree_view(GSymbolsPanel *panel)
GtkTreeIter iter; /* Point d'insertion */
GdkPixbuf *pixbuf; /* Icone pour l'élément inséré */
- format = g_openida_binary_get_format(panel->binary);
+ format = g_loaded_binary_get_format(panel->binary);
routines = g_binary_format_get_routines(G_BIN_FORMAT(format), &routines_count);
qsort(routines, routines_count, sizeof(GBinRoutine *), (__compar_fn_t)g_binary_routine_rcompare);
diff --git a/src/gui/tb/source.c b/src/gui/tb/source.c
index 2a1a532..109cbfa 100644
--- a/src/gui/tb/source.c
+++ b/src/gui/tb/source.c
@@ -41,7 +41,7 @@
static GtkWidget *build_source_tb_widget(GObject *);
/* Réagit à un changement du binaire courant. */
-static void update_source_item_binary(GEditorItem *, GOpenidaBinary *);
+static void update_source_item_binary(GEditorItem *, GLoadedBinary *);
/* Réagit à un changement de panneau d'affichage courant. */
static void update_source_item_view(GEditorItem *, GtkViewPanel *);
@@ -136,7 +136,7 @@ GEditorItem *create_source_tb_item(GObject *ref)
* *
******************************************************************************/
-static void update_source_item_binary(GEditorItem *item, GOpenidaBinary *binary)
+static void update_source_item_binary(GEditorItem *item, GLoadedBinary *binary)
{
GtkComboBox *combo; /* Liste de sélection */
GtkTreeModel *model; /* Gestionnaire d'éléments */
@@ -160,7 +160,7 @@ static void update_source_item_binary(GEditorItem *item, GOpenidaBinary *binary)
/* Inscriptions */
- format = g_openida_binary_get_format(binary);
+ format = g_loaded_binary_get_format(binary);
files = g_binary_format_get_source_files(G_BIN_FORMAT(format), &count, &defsrc);
for (i = 0; i < count; i++)
@@ -211,18 +211,18 @@ static void update_source_item_view(GEditorItem *item, GtkViewPanel *view)
static void change_selected_source(GtkComboBox *widget, GObject *ref)
{
gint index; /* Nouvelle source ciblée */
- GOpenidaBinary *binary; /* Binaire chargé courant */
+ GLoadedBinary *binary; /* Binaire chargé courant */
GCodeBuffer *buffer; /* Nouveau tampon à présenter */
GtkBufferView *view; /* Afficheur de tampons */
index = gtk_combo_box_get_active(widget);
- binary = G_OPENIDA_BINARY(g_object_get_data(ref, "current_binary"));
- buffer = g_openida_binary_get_decompiled_buffer(binary, index);
+ binary = G_LOADED_BINARY(g_object_get_data(ref, "current_binary"));
+ buffer = g_loaded_binary_get_decompiled_buffer(binary, index);
view = GTK_BUFFER_VIEW(g_object_get_data(ref, "current_view"));
if (GTK_IS_BUFFER_VIEW(view))
gtk_buffer_view_attach_buffer(view, buffer,
- g_openida_binary_display_decomp_lines(binary), NULL);
+ g_loaded_binary_display_decomp_lines(binary), NULL);
}
diff --git a/src/panels/breaks.c b/src/panels/breaks.c
index 31e2217..958d6fb 100644
--- a/src/panels/breaks.c
+++ b/src/panels/breaks.c
@@ -26,6 +26,7 @@
#include "panel-int.h"
+#include "../debug/break.h"
#include "../gtkext/easygtk.h"
#include "../gtkext/support.h"
@@ -42,7 +43,7 @@ struct _GBreaksPanel
GtkTreeView *treeview; /* Composant d'affichage */
GtkTreeStore *store; /* Modèle de gestion */
- GOpenidaBinary *binary; /* Binaire en cours d'étude */
+ GLoadedBinary *binary; /* Binaire en cours d'étude */
};
@@ -75,13 +76,13 @@ static void g_breaks_panel_class_init(GBreaksPanelClass *);
static void g_breaks_panel_init(GBreaksPanel *);
/* Réagit à un changement du binaire courant. */
-static void reload_breaks_for_new_binary(GBreaksPanel *, GOpenidaBinary *);
+static void reload_breaks_for_new_binary(GBreaksPanel *, GLoadedBinary *);
/* Intègre à l'affichage un groupe de points d'arrêt. */
-static void add_bp_group_to_breaks_panel(GOpenidaBinary *, GBreakGroup *, GBreaksPanel *);
+static void add_bp_group_to_breaks_panel(GLoadedBinary *, GBreakGroup *, GBreaksPanel *);
/* Réagit à une nouvelle création de point d'arrêt. */
static void refresh_breaks_panel_on_bp_added(GBreakGroup *, GBreakPoint *, GBreaksPanel *);
@@ -250,14 +251,14 @@ GEditorPanel *g_breaks_panel_new(void)
* *
******************************************************************************/
-static void reload_breaks_for_new_binary(GBreaksPanel *panel, GOpenidaBinary *binary)
+static void reload_breaks_for_new_binary(GBreaksPanel *panel, GLoadedBinary *binary)
{
printf("CHNAGE BINARY !\n");
panel->binary = binary;
- g_openida_binary_for_each_bp_group(binary, (GExtFunc)add_bp_group_to_breaks_panel, panel);
+ //g_loaded_binary_for_each_bp_group(binary, (GExtFunc)add_bp_group_to_breaks_panel, panel);
}
@@ -289,7 +290,7 @@ static void reload_breaks_for_new_binary(GBreaksPanel *panel, GOpenidaBinary *bi
* *
******************************************************************************/
-static void add_bp_group_to_breaks_panel(GOpenidaBinary *binary, GBreakGroup *group, GBreaksPanel *panel)
+static void add_bp_group_to_breaks_panel(GLoadedBinary *binary, GBreakGroup *group, GBreaksPanel *panel)
{
/* FIXME : bloquer toute émission de signal tant que les ajouts ne sont pas terminés. */
@@ -325,7 +326,7 @@ static void refresh_breaks_panel_on_bp_added(GBreakGroup *group, GBreakPoint *po
char address[VMPA_MAX_SIZE]; /* Conversion de l'adresse */
GtkTreeIter iter; /* Point d'insertion */
- format = g_openida_binary_get_format(panel->binary);
+ format = g_loaded_binary_get_format(panel->binary);
proc = get_arch_processor_from_format(format);
vmpa_to_string(g_break_point_get_address(point),
diff --git a/src/panels/panel-int.h b/src/panels/panel-int.h
index 543c33c..7579eae 100644
--- a/src/panels/panel-int.h
+++ b/src/panels/panel-int.h
@@ -35,7 +35,7 @@
/* Réagit à un changement du binaire courant. */
-typedef void (* reload_for_new_binary_fc) (GEditorPanel *, GOpenidaBinary *);
+typedef void (* reload_for_new_binary_fc) (GEditorPanel *, GLoadedBinary *);
/* Réagit à un changement d'affichage principal de contenu. */
typedef void (* reload_for_new_view_fc) (GEditorPanel *, GtkViewPanel *, bool);
diff --git a/src/panels/panel.c b/src/panels/panel.c
index 5922fe5..4d08b7f 100644
--- a/src/panels/panel.c
+++ b/src/panels/panel.c
@@ -106,7 +106,7 @@ static void g_editor_panel_init(GEditorPanel *panel)
* *
******************************************************************************/
-void change_current_binary_in_panels(GObject *ref, GOpenidaBinary *binary)
+void change_current_binary_in_panels(GObject *ref, GLoadedBinary *binary)
{
@@ -193,7 +193,7 @@ void place_all_panels_in_editor(GtkWidget *top)
* *
******************************************************************************/
-void notify_panels_of_binary_change(GOpenidaBinary *binary)
+void notify_panels_of_binary_change(GLoadedBinary *binary)
{
GEditorPanel *iter; /* Boucle de parcours */
diff --git a/src/panels/panel.h b/src/panels/panel.h
index b946222..60ce657 100644
--- a/src/panels/panel.h
+++ b/src/panels/panel.h
@@ -64,7 +64,7 @@ GType g_editor_panel_get_type(void);
/* Répercute sur les panneaux un nouveau binaire actif. */
-void change_current_binary_in_panels(GObject *, GOpenidaBinary *);
+void change_current_binary_in_panels(GObject *, GLoadedBinary *);
@@ -77,7 +77,7 @@ void init_internal_panels(void);
void place_all_panels_in_editor(GtkWidget *);
/* Lance une actualisation du fait d'un changement de binaire. */
-void notify_panels_of_binary_change(GOpenidaBinary *);
+void notify_panels_of_binary_change(GLoadedBinary *);
/* Lance une actualisation du fait d'un changement de vue. */
void notify_panels_of_view_change(GtkViewPanel *, bool);
diff --git a/src/plugins/plugin-int.h b/src/plugins/plugin-int.h
index 56753e0..9a5c37c 100644
--- a/src/plugins/plugin-int.h
+++ b/src/plugins/plugin-int.h
@@ -47,7 +47,7 @@ typedef PluginAction (* get_plugin_action_fc) (const GPluginModule *);
typedef MatchingFormatAction (* is_matching_fc) (const GPluginModule *, char **, bin_t **, off_t *);
/* Exécute une action définie sur un binaire chargé. */
-typedef bool (* execute_action_on_binary_fc) (const GPluginModule *, GOpenidaBinary *, PluginAction);
+typedef bool (* execute_action_on_binary_fc) (const GPluginModule *, GLoadedBinary *, PluginAction);
/* Exécute une action relative à un débogueur. */
typedef bool (* execute_on_debugger_fc) (const GPluginModule *, GBinaryDebugger *, PluginAction);
diff --git a/src/plugins/plugin.c b/src/plugins/plugin.c
index e769df6..0cdcb04 100644
--- a/src/plugins/plugin.c
+++ b/src/plugins/plugin.c
@@ -387,7 +387,7 @@ MatchingFormatAction g_plugin_module_is_matching(const GPluginModule *plugin, ch
* *
******************************************************************************/
-bool g_plugin_module_execute_action_on_binary(const GPluginModule *plugin, GOpenidaBinary *binary, PluginAction action)
+bool g_plugin_module_execute_action_on_binary(const GPluginModule *plugin, GLoadedBinary *binary, PluginAction action)
{
return plugin->exec_on_bin(plugin, binary, action);
diff --git a/src/plugins/plugin.h b/src/plugins/plugin.h
index aa90ee1..6fbba4d 100644
--- a/src/plugins/plugin.h
+++ b/src/plugins/plugin.h
@@ -64,7 +64,7 @@ PluginAction g_plugin_module_get_action(const GPluginModule *);
MatchingFormatAction g_plugin_module_is_matching(const GPluginModule *, char **, bin_t **, off_t *);
/* Exécute une action définie sur un binaire chargé. */
-bool g_plugin_module_execute_action_on_binary(const GPluginModule *, GOpenidaBinary *, PluginAction);
+bool g_plugin_module_execute_action_on_binary(const GPluginModule *, GLoadedBinary *, PluginAction);
/* Exécute une action relative à un débogueur. */
bool g_plugin_module_handle_debugger(const GPluginModule *, GBinaryDebugger *, PluginAction);
diff --git a/src/project.c b/src/project.c
index 91fe36c..c3c1844 100644
--- a/src/project.c
+++ b/src/project.c
@@ -31,6 +31,7 @@
#include "params.h"
#include "common/xml.h"
+#include "analysis/binaries/file.h"
#include "gtkext/easygtk.h"
#include "gtkext/gtkblockview.h"
#include "gtkext/gtkdockpanel.h"
@@ -46,7 +47,7 @@
/* Conservation d'un binaire chargé */
typedef struct _loaded_binary
{
- GOpenidaBinary *binary; /* Binaire en question */
+ GLoadedBinary *binary; /* Binaire en question */
GtkViewPanel *views[BVW_COUNT]; /* Composants pour l'affichage */
GtkWidget *scrollwindows[BVW_COUNT]; /* Supports pour l'affichage */
@@ -179,7 +180,7 @@ GStudyProject *g_study_project_open(const char *filename)
unsigned int i; /* Boucle de parcours */
size_t access_len; /* Taille d'un chemin interne */
char *access; /* Chemin pour une sous-config.*/
- GOpenidaBinary *binary; /* Représentation à intégrer */
+ GLoadedBinary *binary; /* Représentation à intégrer */
if (!open_xml_file(filename, &xdoc, &context)) return NULL;
@@ -199,7 +200,7 @@ GStudyProject *g_study_project_open(const char *filename)
access = calloc(access_len, sizeof(char));
snprintf(access, access_len, "/OpenIDAProject/Binaries/Binary[position()=%u]", i + 1);
- binary = g_openida_binary_new_from_xml(context, access);
+ binary = g_file_binary_new_from_xml(context, access);
free(access);
@@ -207,7 +208,7 @@ GStudyProject *g_study_project_open(const char *filename)
{
g_signal_connect(binary, "disassembly-done",
G_CALLBACK(g_study_project_add_loaded_binary), result);
- g_openida_binary_analyse(binary);
+ g_loaded_binary_analyse(binary);
}
}
@@ -260,7 +261,7 @@ bool g_study_project_save(GStudyProject *project, const char *filename)
access = calloc(access_len, sizeof(char));
snprintf(access, access_len, "/OpenIDAProject/Binaries/Binary[position()=%zu]", i + 1);
- result = g_openida_binary_save(project->binaries[i]->binary, xdoc, context, access);
+ result = g_loaded_binary_save(project->binaries[i]->binary, xdoc, context, access);
free(access);
@@ -316,7 +317,7 @@ const char *g_study_project_get_filename(const GStudyProject *project)
* *
******************************************************************************/
-void g_study_project_add_loaded_binary(GOpenidaBinary *binary, GStudyProject *project)
+void g_study_project_add_loaded_binary(GLoadedBinary *binary, GStudyProject *project)
{
size_t index; /* Indice du nouveau binaire */
@@ -343,7 +344,7 @@ void g_study_project_add_loaded_binary(GOpenidaBinary *binary, GStudyProject *pr
* *
******************************************************************************/
-size_t g_study_project_attach_binary(GStudyProject *project, GOpenidaBinary *binary)
+size_t g_study_project_attach_binary(GStudyProject *project, GLoadedBinary *binary)
{
size_t result; /* Indice à retourner */
loaded_binary *loaded; /* Structure à renvoyer */
@@ -385,8 +386,8 @@ size_t g_study_project_attach_binary(GStudyProject *project, GOpenidaBinary *bin
loaded->views[i] = GTK_VIEW_PANEL(view);
gtk_view_panel_attach_binary(loaded->views[i], binary,
- g_openida_binary_display_addresses_in_text(binary),
- g_openida_binary_display_code_in_text(binary));
+ g_loaded_binary_display_addresses_in_text(binary),
+ g_loaded_binary_display_code_in_text(binary));
/* Intégration finale dans un support défilant */
@@ -402,9 +403,9 @@ size_t g_study_project_attach_binary(GStudyProject *project, GOpenidaBinary *bin
/* Support graphique final */
scroll = loaded->scrollwindows[BVW_BLOCK];
- title = g_openida_binary_to_string(binary);
+ title = g_loaded_binary_get_filename(binary, false);
- loaded->item = g_panel_item_new(strrchr(title, G_DIR_SEPARATOR) + 1, title, scroll, "M");
+ loaded->item = g_panel_item_new(title, title, scroll, "M");
/* Enregistrement dans le projet */
@@ -439,7 +440,7 @@ size_t g_study_project_attach_binary(GStudyProject *project, GOpenidaBinary *bin
* *
******************************************************************************/
-void g_study_project_detach_binary(GStudyProject *project, GOpenidaBinary *binary)
+void g_study_project_detach_binary(GStudyProject *project, GLoadedBinary *binary)
{
//GtkDockPanel *dpanel; /* Support de panneaux */
//GDockItem *ditem; /* Support d'affichage utilisé */
@@ -479,7 +480,7 @@ void g_study_project_detach_binary(GStudyProject *project, GOpenidaBinary *binar
* *
******************************************************************************/
-GtkWidget *g_study_project_get_view_for_binary(const GStudyProject *project, const GOpenidaBinary *binary, BinaryView kind, GtkViewPanel **view)
+GtkWidget *g_study_project_get_view_for_binary(const GStudyProject *project, const GLoadedBinary *binary, BinaryView kind, GtkViewPanel **view)
{
GtkWidget *result; /* Composant GTK à retourner */
size_t i; /* Boucle de parcours */
@@ -557,13 +558,13 @@ static void g_study_project_hide(const GStudyProject *project)
* *
******************************************************************************/
-GOpenidaBinary **g_study_project_get_binaries(const GStudyProject *project, size_t *count)
+GLoadedBinary **g_study_project_get_binaries(const GStudyProject *project, size_t *count)
{
- GOpenidaBinary **result; /* Tableau à retourner */
+ GLoadedBinary **result; /* Tableau à retourner */
size_t i; /* Boucle de parcours */
*count = project->binaries_count;
- result = (GOpenidaBinary **)calloc(*count, sizeof(GOpenidaBinary *));
+ result = (GLoadedBinary **)calloc(*count, sizeof(GLoadedBinary *));
for (i = 0; i < *count; i++)
{
diff --git a/src/project.h b/src/project.h
index 3fd3dab..de5badb 100644
--- a/src/project.h
+++ b/src/project.h
@@ -79,22 +79,22 @@ bool g_study_project_save(GStudyProject *, const char *);
const char *g_study_project_get_filename(const GStudyProject *);
/* Assure l'intégration d'un élément binaire dans un projet. */
-void g_study_project_add_loaded_binary(GOpenidaBinary *, GStudyProject *);
+void g_study_project_add_loaded_binary(GLoadedBinary *, GStudyProject *);
/* Attache un fichier donné à un projet donné. */
-size_t g_study_project_attach_binary(GStudyProject *, GOpenidaBinary *);
+size_t g_study_project_attach_binary(GStudyProject *, GLoadedBinary *);
/* Détache un fichier donné à un projet donné. */
-void g_study_project_detach_binary(GStudyProject *, GOpenidaBinary *);
+void g_study_project_detach_binary(GStudyProject *, GLoadedBinary *);
/* Fournit un support d'affichage donné pour un binaire chargé. */
-GtkWidget *g_study_project_get_view_for_binary(const GStudyProject *, const GOpenidaBinary *, BinaryView, GtkViewPanel **);
+GtkWidget *g_study_project_get_view_for_binary(const GStudyProject *, const GLoadedBinary *, BinaryView, GtkViewPanel **);
/* Met en place un projet à l'écran. */
void g_study_project_display(const GStudyProject *);
/* Fournit l'ensemble des binaires associés à un projet. */
-GOpenidaBinary **g_study_project_get_binaries(const GStudyProject *, size_t *);
+GLoadedBinary **g_study_project_get_binaries(const GStudyProject *, size_t *);