summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog52
-rw-r--r--configure.ac18
-rw-r--r--plugins/pychrysa/Makefile.am16
-rw-r--r--plugins/pychrysa/analysis/Makefile.am19
-rw-r--r--plugins/pychrysa/analysis/binaries/file.c116
-rw-r--r--plugins/pychrysa/analysis/binaries/file.h7
-rw-r--r--plugins/pychrysa/analysis/binaries/module.c43
-rw-r--r--plugins/pychrysa/analysis/binaries/module.h2
-rw-r--r--plugins/pychrysa/analysis/binary.c102
-rw-r--r--plugins/pychrysa/analysis/binary.h3
-rw-r--r--plugins/pychrysa/analysis/module.c92
-rw-r--r--plugins/pychrysa/analysis/module.h6
-rw-r--r--plugins/pychrysa/arch/Makefile.am10
-rw-r--r--plugins/pychrysa/arch/archbase.h20
-rw-r--r--plugins/pychrysa/arch/instruction.c2
-rw-r--r--plugins/pychrysa/arch/module.c47
-rw-r--r--plugins/pychrysa/arch/module.h6
-rw-r--r--plugins/pychrysa/arch/vmpa.c325
-rw-r--r--plugins/pychrysa/arch/vmpa.h42
-rw-r--r--plugins/pychrysa/pychrysa.c179
-rw-r--r--plugins/pychrysa/pychrysa.h27
-rw-r--r--plugins/pychrysa/quirks.c2
-rw-r--r--po/POTFILES.in580
-rw-r--r--po/fr.po906
-rw-r--r--src/analysis/binaries/file.c5
-rw-r--r--src/analysis/binaries/file.h3
-rw-r--r--src/arch/Makefile.am3
-rw-r--r--src/arch/vmpa.c87
-rw-r--r--src/arch/vmpa.h68
-rw-r--r--src/gtkext/gtkdockstation.c4
30 files changed, 2058 insertions, 734 deletions
diff --git a/ChangeLog b/ChangeLog
index 83dcb63..69620f1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,55 @@
+14-06-25 Cyrille Bagard <nocbos@gmail.com>
+
+ * configure.ac:
+ Update version and look for python3 + pygobject-3.0.
+
+ * plugins/pychrysa/analysis/binaries/file.c:
+ * plugins/pychrysa/analysis/binaries/file.h:
+ * plugins/pychrysa/analysis/binaries/module.c:
+ * plugins/pychrysa/analysis/binaries/module.h:
+ * plugins/pychrysa/analysis/binary.c:
+ * plugins/pychrysa/analysis/binary.h:
+ * plugins/pychrysa/analysis/Makefile.am:
+ * plugins/pychrysa/analysis/module.c:
+ * plugins/pychrysa/analysis/module.h:
+ * plugins/pychrysa/arch/archbase.h:
+ * plugins/pychrysa/arch/instruction.c:
+ * plugins/pychrysa/arch/Makefile.am:
+ * plugins/pychrysa/arch/module.c:
+ * plugins/pychrysa/arch/module.h:
+ Build the first steps to upgrade to Python3.
+
+ * plugins/pychrysa/arch/vmpa.c:
+ * plugins/pychrysa/arch/vmpa.h:
+ New entries: copy some definitions from <arch/vmpa.h>.
+
+ * plugins/pychrysa/Makefile.am:
+ Define a new name for the Python extension.
+
+ * plugins/pychrysa/pychrysa.c:
+ * plugins/pychrysa/pychrysa.h:
+
+ * plugins/pychrysa/quirks.c:
+ Do not include an old header anymore.
+
+ * po/fr.po:
+ * po/POTFILES.in:
+ Update the list of processed files.
+
+ * src/analysis/binaries/file.c:
+ * src/analysis/binaries/file.h:
+ Give access to the binary filename.
+
+ * src/arch/Makefile.am:
+ Add the 'vmpa.[ch] files to libarch_la_SOURCES.
+
+ * src/arch/vmpa.c:
+ * src/arch/vmpa.h:
+ New entries: introduce a new type for addresses.
+
+ * src/gtkext/gtkdockstation.c:
+ Disable calls to configuration, due to the Python shared object.
+
14-06-05 Cyrille Bagard <nocbos@gmail.com>
* src/gtkext/gtkbufferview.c:
diff --git a/configure.ac b/configure.ac
index 7982079..e318ba4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,13 +5,13 @@
############################################################
AC_PREREQ(2.59)
-AC_INIT([openida], [0.3.11], [nocbos@gmail.com])
+AC_INIT([chrysalide], [0.3.78], [nocbos@gmail.com])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE
AM_SILENT_RULES
-AM_GNU_GETTEXT_VERSION([0.17])
+AM_GNU_GETTEXT_VERSION([0.18.3])
AM_GNU_GETTEXT([external])
AC_CONFIG_SRCDIR([src/editor.c])
@@ -219,23 +219,23 @@ AC_SUBST(LIBSQLITE_LIBS)
#--- Checks for Python
if test "x$enable_debug" = "xyes"; then
- LIBPYTHON_CFLAGS=`python-dbg-config --cflags`
- LIBPYTHON_LIBS=`python-dbg-config --libs`
+ LIBPYTHON_CFLAGS=`python3-dbg-config --cflags`
+ LIBPYTHON_LIBS=`python3-dbg-config --libs`
else
- LIBPYTHON_CFLAGS=`python-config --cflags`
- LIBPYTHON_LIBS=`python-config --libs`
+ LIBPYTHON_CFLAGS=`python3-config --cflags`
+ LIBPYTHON_LIBS=`python3-config --libs`
fi
AC_SUBST(LIBPYTHON_CFLAGS)
AC_SUBST(LIBPYTHON_LIBS)
-#--- Checks for pygobject-2.0
+#--- Checks for pygobject-3.0
-PKG_CHECK_MODULES(LIBPYGOBJECT,pygobject-2.0 >= 2.21.1,[libpygobject_found=yes],[libpygobject_found=no])
+PKG_CHECK_MODULES(LIBPYGOBJECT,pygobject-3.0 >= 3.12.1,[libpygobject_found=yes],[libpygobject_found=no])
if test "$libpygobject_found" = "yes"; then
- libpygobject_version=`pkg-config pygobject-2.0 --modversion`
+ libpygobject_version=`pkg-config pygobject-3.0 --modversion`
else
libpygobject_version='-'
fi
diff --git a/plugins/pychrysa/Makefile.am b/plugins/pychrysa/Makefile.am
index 3032c0e..8664193 100644
--- a/plugins/pychrysa/Makefile.am
+++ b/plugins/pychrysa/Makefile.am
@@ -1,5 +1,5 @@
-pkglib_LTLIBRARIES = pychrysa.la
+pkglib_LTLIBRARIES = pychrysa.la pychrysalide.la
pychrysa_la_SOURCES = \
helpers.h helpers.c \
@@ -22,6 +22,20 @@ pychrysa_la_LDFLAGS = -module -avoid-version $(LIBGTK_LIBS) $(LIBXML_LIBS) $(LIB
-L../../src/plugins/.libs -lplugins
+pychrysalide_la_SOURCES = \
+ pychrysa.h pychrysa.c
+
+pychrysalide_la_LIBADD = \
+ analysis/libpychrysaanalysis.la \
+ arch/libpychrysaarch.la
+
+pychrysalide_la_LDFLAGS = -module -avoid-version \
+ $(LIBPYTHON_LIBS) $(LIBSQLITE_LIBS) $(LIBARCHIVE_LIBS) \
+ -L../../src/.libs -lchrysadisass -lchrysagtkext \
+ -L../../src/plugins/.libs -lplugins
+
+
+
AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS) $(LIBPYTHON_CFLAGS) $(LIBPYGOBJECT_CFLAGS) \
-I../../src
diff --git a/plugins/pychrysa/analysis/Makefile.am b/plugins/pychrysa/analysis/Makefile.am
index f970d94..9b9ac18 100644
--- a/plugins/pychrysa/analysis/Makefile.am
+++ b/plugins/pychrysa/analysis/Makefile.am
@@ -3,14 +3,21 @@ noinst_LTLIBRARIES = libpychrysaanalysis.la
libpychrysaanalysis_la_SOURCES = \
binary.h binary.c \
- block.h block.c \
- module.h module.c \
- roptions.h roptions.c \
- routine.h routine.c
+ module.h module.c
libpychrysaanalysis_la_LIBADD = \
- binaries/libpychrysaanalysisbinaries.la \
- blocks/libpychrysaanalysisblocks.la
+ binaries/libpychrysaanalysisbinaries.la
+
+# libpychrysaanalysis_la_SOURCES = \
+# binary.h binary.c \
+# block.h block.c \
+# module.h module.c \
+# roptions.h roptions.c \
+# routine.h routine.c
+
+# libpychrysaanalysis_la_LIBADD = \
+# binaries/libpychrysaanalysisbinaries.la \
+# blocks/libpychrysaanalysisblocks.la
libpychrysaanalysis_la_LDFLAGS =
diff --git a/plugins/pychrysa/analysis/binaries/file.c b/plugins/pychrysa/analysis/binaries/file.c
index 2b2a460..28bfecb 100644
--- a/plugins/pychrysa/analysis/binaries/file.c
+++ b/plugins/pychrysa/analysis/binaries/file.c
@@ -25,20 +25,21 @@
#include "file.h"
-
#include <pygobject.h>
#include <analysis/binaries/file.h>
+#include "../binary.h"
-/* Crée un nouvel objet Python de type 'FileBinary'. */
-static PyObject *py_file_binary_new(PyTypeObject *, PyObject *, PyObject *);
-
+/* Crée un nouvel objet Python de type 'BinaryFile'. */
+static PyObject *py_binary_file_new(PyTypeObject *, PyObject *, PyObject *);
+/* Fournit le chemin d'accès au binaire représenté. */
+static PyObject *py_binary_file_get_filename(PyObject *, void *);
@@ -48,7 +49,7 @@ static PyObject *py_file_binary_new(PyTypeObject *, PyObject *, PyObject *);
* args = arguments fournis à l'appel. *
* kwds = arguments de type key=val fournis. *
* *
-* Description : Crée un nouvel objet Python de type 'FileBinary'. *
+* Description : Crée un nouvel objet Python de type 'BinaryFile'. *
* *
* Retour : Instance Python mise en place. *
* *
@@ -56,7 +57,7 @@ static PyObject *py_file_binary_new(PyTypeObject *, PyObject *, PyObject *);
* *
******************************************************************************/
-static PyObject *py_file_binary_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
+static PyObject *py_binary_file_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PyObject *result; /* Instance à retourner */
char *filename; /* Nom du fichier à charger */
@@ -69,74 +70,121 @@ static PyObject *py_file_binary_new(PyTypeObject *type, PyObject *args, PyObject
binary = g_file_binary_new_from_file(filename);
result = pygobject_new(G_OBJECT(binary));
- //g_object_unref(binary);
+ g_object_unref(binary);
return result;
}
+/******************************************************************************
+* *
+* Paramètres : self = NULL car méthode statique. *
+* closure = non utilisé ici. *
+* *
+* Description : Fournit le chemin d'accès au binaire représenté. *
+* *
+* Retour : Chemin d'accès en Python. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+static PyObject *py_binary_file_get_filename(PyObject *self, void *closure)
+{
+ const GFileBinary *file; /* Fichier binaire concerné */
+ const char *filename; /* Chemin d'accès à diffuser */
+
+ file = G_FILE_BINARY(pygobject_get(self));
+ filename = g_file_binary_get_filename(file, true);
+ return PyUnicode_FromString(filename);
+
+}
/******************************************************************************
* *
-* Paramètres : module = module dont la définition est à compléter. *
+* Paramètres : - *
* *
-* Description : Prend en charge l'objet 'pychrysalide.analysis.LoadedBinary'.*
+* Description : Fournit un accès à une définition de type à diffuser. *
* *
-* Retour : Bilan de l'opération. *
+* Retour : Définition d'objet pour Python. *
* *
* Remarques : - *
* *
******************************************************************************/
-bool register_python_file_binary(PyObject *module)
+PyTypeObject *get_python_binary_file_type(void)
{
- PyObject *parent_mod; /* Module Python-LoadedBinary */
- int ret; /* Bilan d'un appel */
-
- static PyMethodDef py_file_binary_methods[] = {
+ static PyMethodDef py_binary_file_methods[] = {
{ NULL }
};
- static PyGetSetDef py_file_binary_getseters[] = {
+ static PyGetSetDef py_binary_file_getseters[] = {
+ {
+ "filename", py_binary_file_get_filename, NULL,
+ "Show the filename of the loaded binary file.", NULL
+ },
{ NULL }
};
- static PyTypeObject py_file_binary_type = {
+ static PyTypeObject py_binary_file_type = {
- PyObject_HEAD_INIT(NULL)
+ PyVarObject_HEAD_INIT(NULL, 0)
- .tp_name = "pychrysalide.analysis.binaries.FileBinary",
+ .tp_name = "pychrysalide.analysis.binaries.BinaryFile",
.tp_basicsize = sizeof(PyGObject),
- .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
+ .tp_flags = Py_TPFLAGS_DEFAULT,
- .tp_doc = "PyChrysalide file binary",
+ .tp_doc = "PyChrysalide binary file",
- .tp_methods = py_file_binary_methods,
- .tp_getset = py_file_binary_getseters,
- .tp_new = (newfunc)py_file_binary_new
+ .tp_methods = py_binary_file_methods,
+ .tp_getset = py_binary_file_getseters,
+ .tp_new = (newfunc)py_binary_file_new
};
- parent_mod = PyImport_ImportModule("pychrysalide.analysis");
- if (parent_mod == NULL) return false;
+ return &py_binary_file_type;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : module = module dont la définition est à compléter. *
+* *
+* Description : Prend en charge l'objet 'pychrysalide.analysis.LoadedBinary'.*
+* *
+* Retour : Bilan de l'opération. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+bool register_python_binary_file(PyObject *module)
+{
+ PyTypeObject *py_binary_file_type; /* Type Python 'LoadedBinary' */
+ int ret; /* Bilan d'un appel */
+ PyObject *dict; /* Dictionnaire du module */
+
+ py_binary_file_type = get_python_binary_file_type();
- py_file_binary_type.tp_base = (PyTypeObject *)PyObject_GetAttrString(parent_mod, "LoadedBinary");
- Py_DECREF(parent_mod);
+ py_binary_file_type->tp_base = get_python_loaded_binary_type();
+ py_binary_file_type->tp_basicsize = py_binary_file_type->tp_base->tp_basicsize;
- if (PyType_Ready(&py_file_binary_type) < 0)
+ if (PyType_Ready(py_binary_file_type) < 0)
return false;
- Py_INCREF(&py_file_binary_type);
- ret = PyModule_AddObject(module, "FileBinary", (PyObject *)&py_file_binary_type);
+ Py_INCREF(py_binary_file_type);
+ ret = PyModule_AddObject(module, "BinaryFile", (PyObject *)py_binary_file_type);
+ if (ret != 0) return false;
- pygobject_register_class(module, "GFileBinary", G_TYPE_FILE_BINARY, &py_file_binary_type,
- Py_BuildValue("(O)", py_file_binary_type.tp_base));
+ dict = PyModule_GetDict(module);
+ pygobject_register_class(dict, "BinaryFile", G_TYPE_FILE_BINARY, py_binary_file_type,
+ Py_BuildValue("(O)", py_binary_file_type->tp_base));
- return (ret == 0);
+ return true;
}
diff --git a/plugins/pychrysa/analysis/binaries/file.h b/plugins/pychrysa/analysis/binaries/file.h
index 2ba9ed0..b381379 100644
--- a/plugins/pychrysa/analysis/binaries/file.h
+++ b/plugins/pychrysa/analysis/binaries/file.h
@@ -31,8 +31,11 @@
-/* Prend en charge l'objet 'pychrysalide.analysis.binaries.FileBinary'. */
-bool register_python_file_binary(PyObject *);
+/* Fournit un accès à une définition de type à diffuser. */
+PyTypeObject *get_python_binary_file_type(void);
+
+/* Prend en charge l'objet 'pychrysalide.analysis.binaries.BinaryFile'. */
+bool register_python_binary_file(PyObject *);
diff --git a/plugins/pychrysa/analysis/binaries/module.c b/plugins/pychrysa/analysis/binaries/module.c
index aae0a33..c2adddf 100644
--- a/plugins/pychrysa/analysis/binaries/module.c
+++ b/plugins/pychrysa/analysis/binaries/module.c
@@ -41,25 +41,50 @@
* *
******************************************************************************/
-bool add_binaries_module_to_python_module(PyObject *super)
+bool add_analysis_binaries_module_to_python_module(PyObject *super)
{
- bool result;
- PyObject *module;
+ bool result; /* Bilan à retourner */
+ PyObject *module; /* Sous-module mis en place */
int ret; /* Bilan d'un appel */
- static PyMethodDef py_format_methods[] = {
- { NULL }
+ static PyModuleDef py_chrysalide_arch_module = {
+
+ .m_base = PyModuleDef_HEAD_INIT,
+
+ .m_name = "pychrysalide.analysis.binaries",
+ .m_doc = "Python module for Chrysalide.analysis.binaries",
+
+ .m_size = -1,
+
};
- module = Py_InitModule("pychrysalide.analysis.binaries", py_format_methods);
+ result = false;
+
+ module = PyModule_Create(&py_chrysalide_arch_module);
if (module == NULL) return false;
+ ret = PyState_AddModule(super, &py_chrysalide_arch_module);
+ if (ret != 0) goto aabmtpm_exit;
+
+ ret = _PyImport_FixupBuiltin(module, "pychrysalide.analysis.binaries");
+ if (ret != 0) goto aabmtpm_exit;
+
Py_INCREF(module);
- ret = PyModule_AddObject(super, "pychrysalide.analysis.binaries", module);
+ ret = PyModule_AddObject(super, "binaries", module);
+ if (ret != 0) goto aabmtpm_exit;
+
+ result = true;
+
+ result &= register_python_binary_file(module);
+
+ aabmtpm_exit:
- result = (ret == 0);
+ if (!result)
+ {
+ printf("something went wrong in %s...\n", __FUNCTION__);
+ /* ... */
- result &= register_python_file_binary(module);
+ }
return result;
diff --git a/plugins/pychrysa/analysis/binaries/module.h b/plugins/pychrysa/analysis/binaries/module.h
index 1fd62d0..653f7da 100644
--- a/plugins/pychrysa/analysis/binaries/module.h
+++ b/plugins/pychrysa/analysis/binaries/module.h
@@ -32,7 +32,7 @@
/* Ajoute le module 'binaries' au module Python. */
-bool add_binaries_module_to_python_module(PyObject *);
+bool add_analysis_binaries_module_to_python_module(PyObject *);
diff --git a/plugins/pychrysa/analysis/binary.c b/plugins/pychrysa/analysis/binary.c
index c570cf9..807df7e 100644
--- a/plugins/pychrysa/analysis/binary.c
+++ b/plugins/pychrysa/analysis/binary.c
@@ -28,6 +28,105 @@
#include <pygobject.h>
+
+
+
+
+
+
+
+/******************************************************************************
+* *
+* Paramètres : - *
+* *
+* Description : Fournit un accès à une définition de type à diffuser. *
+* *
+* Retour : Définition d'objet pour Python. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+PyTypeObject *get_python_loaded_binary_type(void)
+{
+ static PyTypeObject py_loaded_binary_type = {
+
+ PyVarObject_HEAD_INIT(NULL, 0)
+
+ .tp_name = "pychrysalide.analysis.LoadedBinary",
+
+ .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
+
+ .tp_doc = "PyChrysalide loaded binary",
+
+ };
+
+ return &py_loaded_binary_type;
+
+}
+
+
+
+#include <analysis/binary.h>
+
+
+
+
+/******************************************************************************
+* *
+* Paramètres : module = module dont la définition est à compléter. *
+* *
+* Description : Prend en charge l'objet 'pychrysalide.arch.loaded_binary'. *
+* *
+* Retour : Bilan de l'opération. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+bool register_python_loaded_binary(PyObject *module)
+{
+ PyTypeObject *py_loaded_binary_type; /* Type Python 'LoadedBinary' */
+ int ret; /* Bilan d'un appel */
+ PyObject *dict; /* Dictionnaire du module */
+
+ py_loaded_binary_type = get_python_loaded_binary_type();
+
+ py_loaded_binary_type->tp_base = &PyGObject_Type;
+ py_loaded_binary_type->tp_basicsize = py_loaded_binary_type->tp_base->tp_basicsize;
+
+ if (PyType_Ready(py_loaded_binary_type) != 0)
+ return false;
+
+ Py_INCREF(py_loaded_binary_type);
+ ret = PyModule_AddObject(module, "LoadedBinary", (PyObject *)py_loaded_binary_type);
+ if (ret != 0) return false;
+
+ dict = PyModule_GetDict(module);
+ pygobject_register_class(dict, "LoadedBinary", G_TYPE_LOADED_BINARY, py_loaded_binary_type,
+ Py_BuildValue("(O)", py_loaded_binary_type->tp_base));
+
+ return true;
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+#if 0
+
+
+#include <pygobject.h>
+
+
#include <analysis/binary.h>
@@ -258,3 +357,6 @@ bool register_python_loaded_binary(PyObject *module)
return (ret == 0);
}
+
+#endif
+
diff --git a/plugins/pychrysa/analysis/binary.h b/plugins/pychrysa/analysis/binary.h
index cb78024..83ea7c7 100644
--- a/plugins/pychrysa/analysis/binary.h
+++ b/plugins/pychrysa/analysis/binary.h
@@ -31,6 +31,9 @@
+/* Fournit un accès à une définition de type à diffuser. */
+PyTypeObject *get_python_loaded_binary_type(void);
+
/* Prend en charge l'objet 'pychrysalide.analysis.LoadedBinary'. */
bool register_python_loaded_binary(PyObject *);
diff --git a/plugins/pychrysa/analysis/module.c b/plugins/pychrysa/analysis/module.c
index 54509a8..e13c8f8 100644
--- a/plugins/pychrysa/analysis/module.c
+++ b/plugins/pychrysa/analysis/module.c
@@ -26,6 +26,97 @@
#include "binary.h"
+#include "binaries/module.h"
+
+
+
+/******************************************************************************
+* *
+* Paramètres : module = module dont la définition est à compléter. *
+* *
+* Description : Ajoute le module 'analysis' au module Python. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+bool add_analysis_module_to_python_module(PyObject *super)
+{
+ bool result; /* Bilan à retourner */
+ PyObject *module; /* Sous-module mis en place */
+ int ret; /* Bilan d'un appel */
+
+ static PyModuleDef py_chrysalide_arch_module = {
+
+ .m_base = PyModuleDef_HEAD_INIT,
+
+ .m_name = "pychrysalide.analysis",
+ .m_doc = "Python module for Chrysalide.analysis",
+
+ .m_size = -1,
+
+ };
+
+ result = false;
+
+ module = PyModule_Create(&py_chrysalide_arch_module);
+ if (module == NULL) return false;
+
+ ret = PyState_AddModule(super, &py_chrysalide_arch_module);
+ if (ret != 0) goto aamtpm_exit;
+
+ ret = _PyImport_FixupBuiltin(module, "pychrysalide.analysis");
+ if (ret != 0) goto aamtpm_exit;
+
+ Py_INCREF(module);
+ ret = PyModule_AddObject(super, "analysis", module);
+ if (ret != 0) goto aamtpm_exit;
+
+ result = true;
+
+ result &= register_python_loaded_binary(module);
+
+ result &= add_analysis_binaries_module_to_python_module(module);
+
+ aamtpm_exit:
+
+ if (!result)
+ {
+ printf("something went wrong in %s...\n", __FUNCTION__);
+ /* ... */
+
+ }
+
+ return result;
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#if 0
+#include "binary.h"
#include "block.h"
#include "routine.h"
#include "binaries/module.h"
@@ -72,3 +163,4 @@ bool add_analysis_module_to_python_module(PyObject *super)
return result;
}
+#endif
diff --git a/plugins/pychrysa/analysis/module.h b/plugins/pychrysa/analysis/module.h
index 0ff1167..bc4a65e 100644
--- a/plugins/pychrysa/analysis/module.h
+++ b/plugins/pychrysa/analysis/module.h
@@ -22,8 +22,8 @@
*/
-#ifndef _PLUGINS_PYOIDA_ANALYSIS_MODULE_H
-#define _PLUGINS_PYOIDA_ANALYSIS_MODULE_H
+#ifndef _PLUGINS_PYCHRYSALIDE_ANALYSIS_MODULE_H
+#define _PLUGINS_PYCHRYSALIDE_ANALYSIS_MODULE_H
#include <Python.h>
@@ -36,4 +36,4 @@ bool add_analysis_module_to_python_module(PyObject *);
-#endif /* _PLUGINS_PYOIDA_ANALYSIS_MODULE_H */
+#endif /* _PLUGINS_PYCHRYSALIDE_ANALYSIS_MODULE_H */
diff --git a/plugins/pychrysa/arch/Makefile.am b/plugins/pychrysa/arch/Makefile.am
index a01d570..54b9261 100644
--- a/plugins/pychrysa/arch/Makefile.am
+++ b/plugins/pychrysa/arch/Makefile.am
@@ -2,10 +2,14 @@
noinst_LTLIBRARIES = libpychrysaarch.la
libpychrysaarch_la_SOURCES = \
- archbase.h archbase.c \
- instruction.h instruction.c \
module.h module.c \
- processor.h processor.c
+ vmpa.h vmpa.c
+
+# libpychrysaarch_la_SOURCES = \
+# archbase.h archbase.c \
+# instruction.h instruction.c \
+# module.h module.c \
+# processor.h processor.c
libpychrysaarch_la_LDFLAGS =
diff --git a/plugins/pychrysa/arch/archbase.h b/plugins/pychrysa/arch/archbase.h
index 8721371..b5d9811 100644
--- a/plugins/pychrysa/arch/archbase.h
+++ b/plugins/pychrysa/arch/archbase.h
@@ -1,8 +1,8 @@
/* Chrysalide - Outil d'analyse de fichiers binaires
- * archbase.h - prototypes pour l'équivalent Python du fichier "arch/archbase.h"
+ * vmpa.h - prototypes pour l'équivalent Python du fichier "arch/vmpa.h"
*
- * Copyright (C) 2010-2012 Cyrille Bagard
+ * Copyright (C) 2014 Cyrille Bagard
*
* This file is part of Chrysalide.
*
@@ -22,11 +22,19 @@
*/
-#ifndef _PLUGINS_PYOIDA_ARCH_ARCHBASE_H
-#define _PLUGINS_PYOIDA_ARCH_ARCHBASE_H
+#ifndef _PLUGINS_PYCHRYSA_ARCH_VMPA_H
+#define _PLUGINS_PYCHRYSA_ARCH_VMPA_H
+
#include <Python.h>
+
+
+
+
+
+
+#if 0
#include <stdbool.h>
#include <arch/archbase.h>
@@ -38,7 +46,9 @@ PyObject *py_vmpa_new_from_existing(vmpa_t);
/* Ajoute l'objet 'arch.vmpa' au module Python. */
bool add_arch_vmpa_to_python_module(PyObject *);
+#endif
+
-#endif /* _PLUGINS_PYOIDA_ARCH_ARCHBASE_H */
+#endif /* _PLUGINS_PYCHRYSA_ARCH_VMPA_H */
diff --git a/plugins/pychrysa/arch/instruction.c b/plugins/pychrysa/arch/instruction.c
index 685d82f..efbdaa5 100644
--- a/plugins/pychrysa/arch/instruction.c
+++ b/plugins/pychrysa/arch/instruction.c
@@ -223,7 +223,7 @@ bool register_python_arch_instruction_iterator(PyObject *module)
.tp_dealloc = (destructor)py_arch_instruction_iterator_dealloc,
- .tp_flags = Py_TPFLAGS_HAVE_ITER | Py_TPFLAGS_HAVE_CLASS,
+ //.tp_flags = Py_TPFLAGS_HAVE_ITER | Py_TPFLAGS_HAVE_CLASS,
.tp_doc = "PyChrysalide architecture instruction iterator",
diff --git a/plugins/pychrysa/arch/module.c b/plugins/pychrysa/arch/module.c
index 7e8fcb3..92172e0 100644
--- a/plugins/pychrysa/arch/module.c
+++ b/plugins/pychrysa/arch/module.c
@@ -25,9 +25,7 @@
#include "module.h"
-#include "instruction.h"
-
-
+#include "vmpa.h"
@@ -45,28 +43,49 @@
bool add_arch_module_to_python_module(PyObject *super)
{
- bool result;
- PyObject *module;
+ bool result; /* Bilan à retourner */
+ PyObject *module; /* Sous-module mis en place */
int ret; /* Bilan d'un appel */
- static PyMethodDef py_arch_methods[] = {
- { NULL }
+ static PyModuleDef py_chrysalide_arch_module = {
+
+ .m_base = PyModuleDef_HEAD_INIT,
+
+ .m_name = "pychrysalide.arch",
+ .m_doc = "Python module for Chrysalide.arch",
+
+ .m_size = -1,
+
};
- module = Py_InitModule("pychrysalide.arch", py_arch_methods);
+ result = false;
+
+ module = PyModule_Create(&py_chrysalide_arch_module);
if (module == NULL) return false;
+ ret = PyState_AddModule(super, &py_chrysalide_arch_module);
+ if (ret != 0) goto aamtpm_exit;
+
+ ret = _PyImport_FixupBuiltin(module, "pychrysalide.arch");
+ if (ret != 0) goto aamtpm_exit;
Py_INCREF(module);
- ret = PyModule_AddObject(super, "pychrysalide.arch", module);
+ ret = PyModule_AddObject(super, "arch", module);
+ if (ret != 0) goto aamtpm_exit;
+
+ result = true;
+
+ result &= register_python_vmpa(module);
- result = (ret == 0);
+ aamtpm_exit:
- if (ret != 0) /* ... */;
+ if (!result)
+ {
+ printf("something went wrong in %s...\n", __FUNCTION__);
+ /* ... */
- result &= register_python_arch_instruction(module);
- result &= register_python_arch_instruction_iterator(module);
+ }
- return true;
+ return result;
}
diff --git a/plugins/pychrysa/arch/module.h b/plugins/pychrysa/arch/module.h
index 8017f76..403ec8a 100644
--- a/plugins/pychrysa/arch/module.h
+++ b/plugins/pychrysa/arch/module.h
@@ -22,8 +22,8 @@
*/
-#ifndef _PLUGINS_PYOIDA_ARCH_MODULE_H
-#define _PLUGINS_PYOIDA_ARCH_MODULE_H
+#ifndef _PLUGINS_PYCHRYSALIDE_ARCH_MODULE_H
+#define _PLUGINS_PYCHRYSALIDE_ARCH_MODULE_H
#include <Python.h>
@@ -36,4 +36,4 @@ bool add_arch_module_to_python_module(PyObject *);
-#endif /* _PLUGINS_PYOIDA_ARCH_MODULE_H */
+#endif /* _PLUGINS_PYCHRYSALIDE_ARCH_MODULE_H */
diff --git a/plugins/pychrysa/arch/vmpa.c b/plugins/pychrysa/arch/vmpa.c
new file mode 100644
index 0000000..b429699
--- /dev/null
+++ b/plugins/pychrysa/arch/vmpa.c
@@ -0,0 +1,325 @@
+
+/* Chrysalide - Outil d'analyse de fichiers binaires
+ * vmpa.c - équivalent Python du fichier "arch/vmpa.c"
+ *
+ * Copyright (C) 2014 Cyrille Bagard
+ *
+ * This file is part of Chrysalide.
+ *
+ * OpenIDA is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * OpenIDA is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+#include "vmpa.h"
+
+
+#include <src/arch/vmpa.h>
+
+
+
+
+
+
+
+typedef struct _py_vmpa_t
+{
+ PyObject_HEAD
+
+ vmpa2_t addr;
+
+} py_vmpa_t;
+
+
+
+
+/* Fournit une représentation d'une variable 'vmpa_t'. */
+static PyObject *py_vmpa_to_str(PyObject *);
+
+
+
+
+/* Effectue une conversion d'un objet Python en type 'vmpa_t'. */
+static bool convert_pyobj_to_vmpa(PyObject *, vmpa2_t *);
+
+/* Effectue une opération de type 'add' avec le type 'vmpa'. */
+static PyObject *py_vmpa_nb_add(PyObject *, PyObject *);
+
+
+
+
+
+/******************************************************************************
+* *
+* Paramètres : obj = objet Python à traiter. *
+* *
+* Description : Fournit une représentation d'une variable 'vmpa_t'. *
+* *
+* Retour : Chaîne de caractère pour Python. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static PyObject *py_vmpa_to_str(PyObject *obj)
+{
+ vmpa2_t *addr;
+
+ addr = &((py_vmpa_t *)obj)->addr;
+
+ return PyUnicode_FromFormat("<phy=%d, virt=0x%08x>", addr->physical, addr->virtual);
+
+}
+
+
+
+
+
+
+
+/******************************************************************************
+* *
+* Paramètres : obj = objet Python à tenter de convertir. *
+* addr = structure équivalente pour Chrysalide. *
+* *
+* Description : Effectue une conversion d'un objet Python en type 'vmpa_t'. *
+* *
+* Retour : Bilan de l'opération. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static bool convert_pyobj_to_vmpa(PyObject *obj, vmpa2_t *addr)
+{
+ bool result; /* Résulats à retourner */
+ PyTypeObject *py_vmpa_type; /* Type Python pour 'vmpa' */
+ int ret; /* Bilan d'un appel */
+ PY_LONG_LONG value; /* Valeur de type générique */
+ int overflow; /* Détection d'une grosse val. */
+
+ result = false;
+
+ py_vmpa_type = get_python_vmpa_type();
+
+ ret = PyObject_IsInstance(obj, (PyObject *)py_vmpa_type);
+
+ /* S'il n'y a rien à faire... */
+ if (ret == 1)
+ {
+ *addr = ((py_vmpa_t *)obj)->addr;
+ result = true;
+ }
+
+ /* Sinon on demande à Python... */
+ else
+ {
+ value = PyLong_AsLongLongAndOverflow(obj, &overflow);
+
+ if (value == -1 && (overflow == 1 || PyErr_Occurred()))
+ PyErr_Clear();
+
+ else
+ {
+ init_vmpa(addr, value, value);
+ result = true;
+ }
+
+ }
+
+ return result;
+
+}
+
+
+
+
+/******************************************************************************
+* *
+* Paramètres : o1 = premier élément concerné par l'opération. *
+* o2 = second élément concerné par l'opération. *
+* *
+* Description : Effectue une opération de type 'add' avec le type 'vmpa'. *
+* *
+* Retour : Résultat de l'opération. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static PyObject *py_vmpa_nb_add(PyObject *o1, PyObject *o2)
+{
+ PyObject *result; /* Résultat à retourner */
+ vmpa2_t addr1; /* Première adresse à traiter */
+ vmpa2_t addr2; /* Seconde adresse à traiter */
+ PyTypeObject *py_vmpa_type; /* Type Python pour 'vmpa' */
+
+ if (!convert_pyobj_to_vmpa(o1, &addr1))
+ return NULL;
+
+ if (!convert_pyobj_to_vmpa(o2, &addr2))
+ return NULL;
+
+ py_vmpa_type = get_python_vmpa_type();
+
+ result = PyObject_CallObject((PyObject *)py_vmpa_type, NULL);
+
+ init_vmpa(&((py_vmpa_t *)result)->addr,
+ addr1.physical + addr2.physical,
+ addr1.virtual + addr2.virtual);
+
+ return result;
+
+}
+
+
+
+
+void log_simple_message(/*LogMessageType*/ int type, const char *msg)
+{
+
+}
+
+
+void log_variadic_message(/*LogMessageType*/ int type, const char *fmt, ...)
+{
+
+
+}
+
+
+void change_editor_items_current_view_content(void/*GtkViewPanel*/ *view)
+{
+
+
+}
+
+
+
+
+/******************************************************************************
+* *
+* Paramètres : - *
+* *
+* Description : Fournit un accès à une définition de type à diffuser. *
+* *
+* Retour : Définition d'objet pour Python. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+PyTypeObject *get_python_vmpa_type(void)
+{
+ static PyNumberMethods py_vmpa_nb_proto = {
+
+ .nb_add = py_vmpa_nb_add,
+
+ /*
+ binaryfunc nb_add;
+ binaryfunc nb_subtract;
+ binaryfunc nb_multiply;
+ binaryfunc nb_remainder;
+ binaryfunc nb_divmod;
+ ternaryfunc nb_power;
+ unaryfunc nb_negative;
+ unaryfunc nb_positive;
+ unaryfunc nb_absolute;
+ inquiry nb_bool;
+ unaryfunc nb_invert;
+ binaryfunc nb_lshift;
+ binaryfunc nb_rshift;
+ binaryfunc nb_and;
+ binaryfunc nb_xor;
+ binaryfunc nb_or;
+ unaryfunc nb_int;
+ void *nb_reserved;
+ unaryfunc nb_float;
+
+ binaryfunc nb_inplace_add;
+ binaryfunc nb_inplace_subtract;
+ binaryfunc nb_inplace_multiply;
+ binaryfunc nb_inplace_remainder;
+ ternaryfunc nb_inplace_power;
+ binaryfunc nb_inplace_lshift;
+ binaryfunc nb_inplace_rshift;
+ binaryfunc nb_inplace_and;
+ binaryfunc nb_inplace_xor;
+ binaryfunc nb_inplace_or;
+
+ binaryfunc nb_floor_divide;
+ binaryfunc nb_true_divide;
+ binaryfunc nb_inplace_floor_divide;
+ binaryfunc nb_inplace_true_divide;
+
+ unaryfunc nb_index;
+
+ */
+
+ };
+
+ static PyTypeObject py_vmpa_type = {
+
+ PyVarObject_HEAD_INIT(NULL, 0)
+
+ .tp_name = "pychrysalide.arch.vmpa",
+ .tp_basicsize = sizeof(py_vmpa_t),
+
+ .tp_as_number = &py_vmpa_nb_proto,
+
+ .tp_str = py_vmpa_to_str,
+
+ .tp_flags = Py_TPFLAGS_DEFAULT,
+
+ .tp_doc = "Python object for vmpa_t"
+
+ };
+
+ return &py_vmpa_type;
+
+}
+
+
+
+
+/******************************************************************************
+* *
+* Paramètres : module = module dont la définition est à compléter. *
+* *
+* Description : Prend en charge l'objet 'pychrysalide.arch.vmpa'. *
+* *
+* Retour : Bilan de l'opération. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+bool register_python_vmpa(PyObject *module)
+{
+ PyTypeObject *py_vmpa_type; /* Type Python pour 'vmpa' */
+ int ret; /* Bilan d'un appel */
+
+ py_vmpa_type = get_python_vmpa_type();
+
+ py_vmpa_type->tp_new = PyType_GenericNew;
+
+ if (PyType_Ready(py_vmpa_type) != 0)
+ return false;
+
+ Py_INCREF(py_vmpa_type);
+ ret = PyModule_AddObject(module, "vmpa", (PyObject *)py_vmpa_type);
+
+ return (ret == 0);
+
+}
diff --git a/plugins/pychrysa/arch/vmpa.h b/plugins/pychrysa/arch/vmpa.h
new file mode 100644
index 0000000..6ee00b2
--- /dev/null
+++ b/plugins/pychrysa/arch/vmpa.h
@@ -0,0 +1,42 @@
+
+/* Chrysalide - Outil d'analyse de fichiers binaires
+ * vmpa.h - prototypes pour l'équivalent Python du fichier "arch/vmpa.h"
+ *
+ * Copyright (C) 2014 Cyrille Bagard
+ *
+ * This file is part of Chrysalide.
+ *
+ * OpenIDA is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * OpenIDA is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+#ifndef _PLUGINS_PYCHRYSALIDE_ARCH_VMPA_H
+#define _PLUGINS_PYCHRYSALIDE_ARCH_VMPA_H
+
+
+#include <Python.h>
+#include <stdbool.h>
+
+
+
+/* Fournit un accès à une définition de type à diffuser. */
+PyTypeObject *get_python_vmpa_type(void);
+
+/* Prend en charge l'objet 'pychrysalide.arch.vmpa'. */
+bool register_python_vmpa(PyObject *);
+
+
+
+#endif /* _PLUGINS_PYCHRYSALIDE_ARCH_VMPA_H */
diff --git a/plugins/pychrysa/pychrysa.c b/plugins/pychrysa/pychrysa.c
index f2dbf0f..865c0fc 100644
--- a/plugins/pychrysa/pychrysa.c
+++ b/plugins/pychrysa/pychrysa.c
@@ -24,10 +24,12 @@
#include "pychrysa.h"
+#if 0
+
#include <dirent.h>
#include <pygobject.h>
#include <string.h>
-#include <pygtk/pygtk.h>
+//#include <pygtk/pygtk.h>
#include <config.h>
@@ -252,8 +254,33 @@ PluginAction get_plugin_action(const GPluginModule *plugin)
* *
******************************************************************************/
-PyMODINIT_FUNC PyInit_pychrysa(void)
+PyMODINIT_FUNC initpychrysa/*PyInit_pychrysa*/(void)
{
+ PyObject *module;
+
+ //init_pygobject();
+ //init_pygtk();
+
+ pychrysalide_init_quirks();
+
+ module = Py_InitModule("pychrysalide", SpamMethods);
+
+ //add_analysis_roptions_to_python_module(module);
+ add_analysis_module_to_python_module(module);
+ add_arch_module_to_python_module(module);
+ add_debug_module_to_python_module(module);
+ add_format_module_to_python_module(module);
+ add_glibext_module_to_python_module(module);
+ add_gtkext_module_to_python_module(module);
+ add_gui_module_to_python_module(module);
+
+ add_plugin_to_python_module(module);
+
+
+ /*
+
+
+
static struct PyModuleDef spammodule = {
PyModuleDef_HEAD_INIT,
"pychrysalide",
@@ -264,6 +291,8 @@ PyMODINIT_FUNC PyInit_pychrysa(void)
PyModule_Create(&spammodule);
+ */
+
}
#else
@@ -305,3 +334,149 @@ PyMODINIT_FUNC initpychrysa(void)
}
#endif
+
+
+
+#endif
+
+
+
+
+
+
+
+#include <pygobject.h>
+
+
+#include "../../revision.h"
+
+
+#include "analysis/module.h"
+#include "arch/module.h"
+
+
+
+// TODO : à bouger ?
+#include "../../src/arch/processor.h"
+#include "../../src/format/format.h"
+
+
+
+/* Fournit la version du programme global. */
+static PyObject *py_chrysalide_version(PyObject *, PyObject *);
+
+
+
+
+/******************************************************************************
+* *
+* Paramètres : self = NULL car méthode statique. *
+* args = non utilisé ici. *
+* *
+* Description : Fournit la version du programme global. *
+* *
+* Retour : Numéro de révision. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static PyObject *py_chrysalide_version(PyObject *self, PyObject *args)
+{
+ char version[16];
+ int major;
+ int minor;
+ int revision;
+
+ major = REVISION / 1000;
+ minor = (REVISION - (major * 1000)) / 100;
+ revision = REVISION % 100;
+
+ snprintf(version, sizeof(version), "%d.%d.%d", major, minor, revision);
+
+ return PyUnicode_FromString(version);
+
+}
+
+
+
+
+
+
+
+/******************************************************************************
+* *
+* Paramètres : - *
+* *
+* Description : Point d'entrée pour l'initialisation de Python. *
+* *
+* Retour : ? *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+PyMODINIT_FUNC PyInit_pychrysalide(void)
+{
+ PyObject *result; /* Module Python à retourner */
+ PyObject *pygobj_mod; /* Module Python-GObject */
+ bool status; /* Bilan des inclusions */
+
+ static PyMethodDef py_chrysalide_methods[] = {
+
+ { "version", py_chrysalide_version,
+ METH_NOARGS,
+ "Provide the revision number of Chrysalide."
+ },
+ { "python", py_chrysalide_version,
+ METH_NOARGS,
+ "Provide the revision number of Chrysalide module for Python."
+ },
+ { NULL }
+
+ };
+
+ static PyModuleDef py_chrysalide_module = {
+
+ .m_base = PyModuleDef_HEAD_INIT,
+
+ .m_name = "pychrysalide",
+ .m_doc = "Python module for Chrysalide",
+
+ .m_size = -1,
+
+ .m_methods = py_chrysalide_methods
+
+ };
+
+
+ // TODO : à bouger !
+ init_all_processors();
+ init_all_formats();
+
+
+ if (pygobject_init(-1, -1, -1) == NULL)
+ return NULL;
+
+ /**
+ * Pour une raison non identifiée, si le module n'est pas préchargé,
+ * le flot d'exécution plante dans la fonction insertdict() de Objects/dictobject.c:818.
+ */
+ pygobj_mod = PyImport_ImportModule("gi.repository.GObject");
+ if (pygobj_mod == NULL)
+ return NULL;
+
+ result = PyModule_Create(&py_chrysalide_module);
+
+ status = true;
+
+ status &= add_analysis_module_to_python_module(result);
+ status &= add_arch_module_to_python_module(result);
+
+ printf("status :: %d\n", status);
+
+ /* TODO : if !status... */
+
+ return result;
+
+}
diff --git a/plugins/pychrysa/pychrysa.h b/plugins/pychrysa/pychrysa.h
index 5897abe..0fdc074 100644
--- a/plugins/pychrysa/pychrysa.h
+++ b/plugins/pychrysa/pychrysa.h
@@ -25,7 +25,23 @@
#define _PLUGINS_PYCHRYSA_H
+/**
+ * Note:
+ * Since Python may define some pre-processor definitions which affect the standard headers
+ * on some systems, you must include Python.h before any standard headers are included.
+ *
+ * cf. https://docs.python.org/3.4/c-api/intro.html
+ */
#include <Python.h>
+
+
+
+
+
+
+#if 0
+
+
#include <glib-object.h>
#include <stdbool.h>
@@ -50,7 +66,8 @@ PluginAction get_plugin_action(const GPluginModule *);
#if PY_VERSION_HEX >= 0x03000000
/* Point d'entrée pour l'initialisation de Python. */
-PyMODINIT_FUNC PyInit_pychrysa(void);
+//PyMODINIT_FUNC PyInit_pychrysa(void);
+PyMODINIT_FUNC initpychrysa(void);
#else
@@ -59,6 +76,14 @@ PyMODINIT_FUNC initpychrysa(void);
#endif
+#endif
+
+
+
+
+/* Point d'entrée pour l'initialisation de Python. */
+PyMODINIT_FUNC PyInit_pychrysalide(void);
+
#endif /* _PLUGINS_PYCHRYSA_H */
diff --git a/plugins/pychrysa/quirks.c b/plugins/pychrysa/quirks.c
index 64d7bf2..4aa8536 100644
--- a/plugins/pychrysa/quirks.c
+++ b/plugins/pychrysa/quirks.c
@@ -26,7 +26,7 @@
-#include <pyglib.h>
+//#include <pyglib.h>
#include <pygobject.h>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index d51c766..a8ebdcc 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,296 +1,344 @@
-src/plugins/plugin.c
-src/plugins/pglist.c
-src/plugins/pyoida/py_log.c
-src/plugins/pyoida/py_binary.c
-src/plugins/pyoida/pyoida.c
-src/plugins/pyoida/py_line.c
src/plugins/context.c
+src/plugins/pglist.c
+src/plugins/plugin.c
src/plugins/overjump/overjump.c
-src/debug/jdwp/tcp.c
-src/debug/jdwp/sets/list.c
-src/debug/jdwp/sets/vm.c
-src/debug/jdwp/sets/thread.c
-src/debug/jdwp/packet.c
-src/debug/jdwp/misc/location.c
-src/debug/jdwp/misc/id.c
-src/debug/jdwp/misc/header.c
-src/debug/jdwp/misc/types.c
-src/debug/jdwp/debugger.c
-src/debug/break.c
-src/debug/packet.c
-src/debug/stream.c
-src/debug/remgdb/tcp.c
-src/debug/remgdb/helpers.c
-src/debug/remgdb/packet.c
-src/debug/remgdb/stream.c
-src/debug/remgdb/gdb.c
-src/debug/debugger.c
-src/analysis/decomp/decompiler.c
-src/analysis/line_prologue.c
-src/analysis/routine.c
-src/analysis/binary.c
-src/analysis/line.c
-src/analysis/variable.c
-src/analysis/line_comment.c
-src/analysis/type.c
-src/analysis/line_code.c
-src/analysis/disass/output.c
-src/analysis/disass/fetch.c
-src/analysis/disass/links.c
-src/analysis/disass/disassembler.c
-src/analysis/exporter.c
-src/analysis/roptions.c
-src/dialogs/plugins.c
-src/dialogs/about.c
-src/dialogs/binparts.c
-src/dialogs/add_shellcode.c
-src/dialogs/export.c
-src/xdg.c
-src/decomp/output.c
-src/decomp/expr/cond.c
-src/decomp/expr/return.c
-src/decomp/expr/pseudo.c
-src/decomp/expr/array.c
-src/decomp/expr/dalvik/array.c
-src/decomp/expr/assign.c
-src/decomp/expr/immediate.c
-src/decomp/expr/arithm.c
-src/decomp/expr/call.c
-src/decomp/expr/block.c
-src/decomp/instruction.c
-src/decomp/instr/ite.c
-src/decomp/context.c
-src/decomp/expression.c
-src/decomp/lang/java.c
-src/decomp/lang/asm.c
-src/panel/panels.c
-src/panel/log.c
-src/panel/symbols.c
-src/panel/strings.c
-src/panel/registers.c
-src/glibext/gbufferline.c
-src/glibext/gcodebuffer.c
-src/glibext/delayed.c
-src/glibext/gnhash.c
-src/glibext/gbuffersegment.c
-src/dlg_sections.c
-src/gui/editem.c
-src/gui/menus/file.c
-src/gui/menus/view.c
-src/gui/menus/binary.c
-src/gui/menus/menubar.c
-src/gui/menus/help.c
-src/gui/menus/project.c
-src/gui/menus/debug.c
-src/gui/panels/log.c
-src/gui/panels/symbols.c
-src/gui/panels/panel.c
-src/gui/tb/toolbar.c
-src/gui/tb/source.c
-src/configuration.c
-src/format/dwarf/dwarf.c
-src/format/dwarf/abbrev.c
-src/format/dwarf/utils.c
-src/format/dwarf/info.c
-src/format/dwarf/d_dwarf.c
-src/format/elf/section.c
-src/format/elf/elf.c
-src/format/elf/helper_x86.c
-src/format/elf/symbols.c
-src/format/elf/helper_mips.c
-src/format/elf/strings.c
-src/format/elf/program.c
-src/format/elf/elf-int.c
-src/format/executable.c
-src/format/mangling/libjavamangling_la-java_tok.c
-src/format/mangling/itanium_gram.c
-src/format/mangling/demangler.c
-src/format/mangling/context.c
-src/format/mangling/libjavamangling_la-java_gram.c
-src/format/mangling/itanium_tok.c
-src/format/symbol.c
-src/format/exe_format.c
-src/format/part.c
-src/format/java/java-int.c
-src/format/java/e_java.c
-src/format/java/java.c
-src/format/java/method.c
-src/format/java/pool.c
-src/format/java/field.c
-src/format/java/attribute.c
-src/format/dex/dex.c
-src/format/dex/method.c
-src/format/dex/pool.c
-src/format/dex/class.c
-src/format/dex/dex-int.c
-src/format/format.c
-src/format/dbg_format.c
-src/format/pe/pe-int.c
-src/format/pe/section.c
-src/format/pe/symbols.c
-src/format/pe/pe.c
+src/common/net.c
src/common/xml.c
+src/common/fnv1a.c
+src/common/endianness.c
+src/common/xdg.c
+src/common/io.c
src/common/leb128.c
+src/common/dllist.c
src/common/extstr.c
src/common/environment.c
-src/common/net.c
-src/common/endianness.c
-src/common/dllist.c
-src/editor.c
-src/main.c
-src/params.c
-src/project.c
-src/graph/node.c
-src/graph/layout.c
-src/graph/dot.c
-src/panels/glimpse.c
-src/panels/breaks.c
-src/panels/strings.c
-src/panels/panel.c
-src/panels/registers.c
-src/arch/artificial.c
+src/arch/processor.c
src/arch/operand.c
-src/arch/x86/op_movs.c
-src/arch/x86/op_hlt.c
-src/arch/x86/operand.c
-src/arch/x86/op_jump.c
-src/arch/x86/op_xor.c
-src/arch/x86/op_stos.c
-src/arch/x86/op_mov.c
-src/arch/x86/op_scas.c
-src/arch/x86/op_push.c
-src/arch/x86/op_sbb.c
-src/arch/x86/op_nop.c
-src/arch/x86/op_not.c
-src/arch/x86/op_test.c
-src/arch/x86/op_dec.c
-src/arch/x86/op_call.c
-src/arch/x86/op_shl.c
-src/arch/x86/op_or.c
-src/arch/x86/op_rcr.c
-src/arch/x86/instruction.c
-src/arch/x86/op_cld.c
-src/arch/x86/op_sar.c
-src/arch/x86/op_ror.c
-src/arch/x86/op_inc.c
-src/arch/x86/op_ret.c
-src/arch/x86/op_cmps.c
-src/arch/x86/op_shr.c
-src/arch/x86/op_arpl.c
-src/arch/x86/processor.c
-src/arch/x86/op_lea.c
-src/arch/x86/op_set.c
-src/arch/x86/op_rol.c
-src/arch/x86/op_int.c
-src/arch/x86/registers.c
-src/arch/x86/op_pop.c
-src/arch/x86/op_add.c
-src/arch/x86/op_cmp.c
-src/arch/x86/op_adc.c
-src/arch/x86/op_xchg.c
-src/arch/x86/op_mul.c
-src/arch/x86/op_and.c
-src/arch/x86/op_rcl.c
-src/arch/x86/op_movsx.c
-src/arch/x86/op_sub.c
-src/arch/x86/op_movzx.c
-src/arch/x86/op_leave.c
+src/arch/context.c
+src/arch/register.c
+src/arch/archbase.c
+src/arch/dalvik/processor.c
src/arch/dalvik/operand.c
-src/arch/dalvik/decomp/aget.c
-src/arch/dalvik/decomp/aput.c
-src/arch/dalvik/decomp/array.c
-src/arch/dalvik/decomp/const.c
-src/arch/dalvik/decomp/if.c
-src/arch/dalvik/decomp/arithm.c
-src/arch/dalvik/decomp/ret.c
-src/arch/dalvik/decomp/invoke.c
-src/arch/dalvik/opcodes/mul.c
+src/arch/dalvik/pseudo/switch.c
+src/arch/dalvik/pseudo/fill.c
+src/arch/dalvik/context.c
+src/arch/dalvik/register.c
+src/arch/dalvik/opcodes/ret.c
src/arch/dalvik/opcodes/check.c
-src/arch/dalvik/opcodes/xor.c
-src/arch/dalvik/opcodes/aget.c
-src/arch/dalvik/opcodes/aput.c
+src/arch/dalvik/opcodes/div.c
+src/arch/dalvik/opcodes/shr.c
+src/arch/dalvik/opcodes/rsub.c
src/arch/dalvik/opcodes/array.c
-src/arch/dalvik/opcodes/rem.c
-src/arch/dalvik/opcodes/or.c
-src/arch/dalvik/opcodes/sput.c
+src/arch/dalvik/opcodes/const.c
src/arch/dalvik/opcodes/switch.c
-src/arch/dalvik/opcodes/add.c
-src/arch/dalvik/opcodes/rsub.c
-src/arch/dalvik/opcodes/iget.c
-src/arch/dalvik/opcodes/sub.c
-src/arch/dalvik/opcodes/cmp.c
+src/arch/dalvik/opcodes/iput.c
src/arch/dalvik/opcodes/sget.c
+src/arch/dalvik/opcodes/or.c
src/arch/dalvik/opcodes/new.c
-src/arch/dalvik/opcodes/to.c
+src/arch/dalvik/opcodes/aput.c
+src/arch/dalvik/opcodes/xor.c
+src/arch/dalvik/opcodes/iget.c
+src/arch/dalvik/opcodes/nop.c
src/arch/dalvik/opcodes/goto.c
-src/arch/dalvik/opcodes/const.c
+src/arch/dalvik/opcodes/aget.c
+src/arch/dalvik/opcodes/ushr.c
+src/arch/dalvik/opcodes/cmp.c
+src/arch/dalvik/opcodes/monitor.c
+src/arch/dalvik/opcodes/rem.c
+src/arch/dalvik/opcodes/to.c
src/arch/dalvik/opcodes/and.c
-src/arch/dalvik/opcodes/shr.c
-src/arch/dalvik/opcodes/shl.c
-src/arch/dalvik/opcodes/iput.c
+src/arch/dalvik/opcodes/instanceof.c
src/arch/dalvik/opcodes/if.c
-src/arch/dalvik/opcodes/move.c
-src/arch/dalvik/opcodes/ret.c
-src/arch/dalvik/opcodes/nop.c
-src/arch/dalvik/opcodes/div.c
-src/arch/dalvik/opcodes/ushr.c
+src/arch/dalvik/opcodes/mul.c
+src/arch/dalvik/opcodes/throw.c
+src/arch/dalvik/opcodes/sput.c
+src/arch/dalvik/opcodes/add.c
+src/arch/dalvik/opcodes/shl.c
src/arch/dalvik/opcodes/invoke.c
+src/arch/dalvik/opcodes/not.c
+src/arch/dalvik/opcodes/move.c
+src/arch/dalvik/opcodes/sub.c
+src/arch/dalvik/opcodes/neg.c
+src/arch/dalvik/decomp/ret.c
+src/arch/dalvik/decomp/array.c
+src/arch/dalvik/decomp/const.c
+src/arch/dalvik/decomp/switch.c
+src/arch/dalvik/decomp/iput.c
+src/arch/dalvik/decomp/new.c
+src/arch/dalvik/decomp/aput.c
+src/arch/dalvik/decomp/iget.c
+src/arch/dalvik/decomp/aget.c
+src/arch/dalvik/decomp/arithm.c
+src/arch/dalvik/decomp/if.c
+src/arch/dalvik/decomp/invoke.c
+src/arch/dalvik/decomp/move.c
src/arch/dalvik/instruction.c
-src/arch/dalvik/pseudo/switch.c
-src/arch/dalvik/pseudo/fill.c
-src/arch/dalvik/register.c
-src/arch/dalvik/processor.c
-src/arch/dalvik/operands/args.c
src/arch/dalvik/operands/target.c
src/arch/dalvik/operands/register.c
src/arch/dalvik/operands/pool.c
-src/arch/dalvik/context.c
-src/arch/mips/operand.c
-src/arch/mips/op_jump.c
-src/arch/mips/op_nop.c
-src/arch/mips/instruction.c
-src/arch/mips/op_branch.c
-src/arch/mips/op_store.c
-src/arch/mips/processor.c
-src/arch/mips/registers.c
-src/arch/mips/op_load.c
-src/arch/mips/op_add.c
-src/arch/mips/op_sr.c
-src/arch/mips/op_and.c
-src/arch/mips/op_sub.c
-src/arch/instruction.c
-src/arch/archbase.c
-src/arch/jvm/operand.c
+src/arch/dalvik/operands/args.c
+src/arch/immediate.c
+src/arch/arm/processor.c
+src/arch/arm/v456/register.c
+src/arch/arm/v456/addressing.c
+src/arch/arm/v456/instruction.c
+src/arch/arm/v456/operands/register.c
+src/arch/arm/v456/operands/content.c
+src/arch/arm/instruction.c
+src/arch/jvm/processor.c
src/arch/jvm/op_const.c
+src/arch/jvm/op_add.c
+src/arch/jvm/op_pop.c
+src/arch/jvm/operand.c
+src/arch/jvm/op_monitor.c
+src/arch/jvm/op_store.c
src/arch/jvm/op_dup.c
+src/arch/jvm/op_getput.c
+src/arch/jvm/op_invoke.c
+src/arch/jvm/op_load.c
+src/arch/jvm/op_convert.c
src/arch/jvm/op_nop.c
src/arch/jvm/instruction.c
-src/arch/jvm/op_convert.c
-src/arch/jvm/op_getput.c
-src/arch/jvm/op_store.c
src/arch/jvm/op_ret.c
-src/arch/jvm/processor.c
-src/arch/jvm/op_pop.c
-src/arch/jvm/op_load.c
-src/arch/jvm/op_add.c
-src/arch/jvm/op_invoke.c
-src/arch/jvm/op_monitor.c
-src/arch/immediate.c
-src/arch/processor.c
-src/arch/context.c
-src/arch/arm/processor.c
-src/gtkext/gtkbinview.c
-src/gtkext/gtkdropwindow.c
-src/gtkext/gtkdockitem.c
-src/gtkext/gtkviewpanel.c
-src/gtkext/easygtk.c
+src/arch/artificial.c
+src/arch/instruction.c
+src/arch/mips/processor.c
+src/arch/mips/op_add.c
+src/arch/mips/operand.c
+src/arch/mips/op_store.c
+src/arch/mips/op_sub.c
+src/arch/mips/op_sr.c
+src/arch/mips/op_branch.c
+src/arch/mips/op_load.c
+src/arch/mips/op_nop.c
+src/arch/mips/instruction.c
+src/arch/mips/registers.c
+src/arch/mips/op_jump.c
+src/arch/mips/op_and.c
+src/arch/x86/processor.c
+src/arch/x86/operand.c
+src/arch/x86/register.c
+src/arch/x86/opcodes/ret.c
+src/arch/x86/opcodes/shr.c
+src/arch/x86/opcodes/cld.c
+src/arch/x86/opcodes/set.c
+src/arch/x86/opcodes/movsx.c
+src/arch/x86/opcodes/stos.c
+src/arch/x86/opcodes/movzx.c
+src/arch/x86/opcodes/rcr.c
+src/arch/x86/opcodes/pop.c
+src/arch/x86/opcodes/push.c
+src/arch/x86/opcodes/int.c
+src/arch/x86/opcodes/lea.c
+src/arch/x86/opcodes/dec.c
+src/arch/x86/opcodes/or.c
+src/arch/x86/opcodes/rcl.c
+src/arch/x86/opcodes/sbb.c
+src/arch/x86/opcodes/cmps.c
+src/arch/x86/opcodes/xor.c
+src/arch/x86/opcodes/test.c
+src/arch/x86/opcodes/nop.c
+src/arch/x86/opcodes/jump.c
+src/arch/x86/opcodes/ror.c
+src/arch/x86/opcodes/sar.c
+src/arch/x86/opcodes/mov.c
+src/arch/x86/opcodes/hlt.c
+src/arch/x86/opcodes/cmp.c
+src/arch/x86/opcodes/and.c
+src/arch/x86/opcodes/adc.c
+src/arch/x86/opcodes/scas.c
+src/arch/x86/opcodes/mul.c
+src/arch/x86/opcodes/arpl.c
+src/arch/x86/opcodes/rol.c
+src/arch/x86/opcodes/call.c
+src/arch/x86/opcodes/movs.c
+src/arch/x86/opcodes/add.c
+src/arch/x86/opcodes/leave.c
+src/arch/x86/opcodes/shl.c
+src/arch/x86/opcodes/not.c
+src/arch/x86/opcodes/inc.c
+src/arch/x86/opcodes/xchg.c
+src/arch/x86/opcodes/sub.c
+src/arch/x86/instruction.c
+src/arch/x86/operands/register.c
+src/arch/x86/operands/relative.c
+src/arch/x86/operands/moffs.c
+src/arch/x86/operands/modrm.c
+src/arch/x86/operands/data.c
+src/gui/tb/source.c
+src/gui/tb/portions.c
+src/gui/tb/toolbar.c
+src/gui/panels/panel.c
+src/gui/panels/symbols.c
+src/gui/panels/glance.c
+src/gui/panels/welcome.c
+src/gui/panels/strings.c
+src/gui/panels/log.c
+src/gui/status.c
+src/gui/editem.c
+src/gui/menus/binary.c
+src/gui/menus/debug.c
+src/gui/menus/help.c
+src/gui/menus/edition.c
+src/gui/menus/view.c
+src/gui/menus/menubar.c
+src/gui/menus/file.c
+src/gui/menus/project.c
+src/glibext/gbuffersegment.c
+src/glibext/gbinportion.c
+src/glibext/gcodebuffer.c
+src/glibext/chrysamarshal.c
+src/glibext/delayed.c
+src/glibext/gbufferline.c
+src/glibext/gnhash.c
+src/panels/breaks.c
+src/panels/panel.c
+src/panels/strings.c
+src/panels/registers.c
+src/params.c
+src/debug/break.c
+src/debug/packet.c
+src/debug/remgdb/packet.c
+src/debug/remgdb/helpers.c
+src/debug/remgdb/tcp.c
+src/debug/remgdb/stream.c
+src/debug/remgdb/gdb.c
+src/debug/jdwp/packet.c
+src/debug/jdwp/sets/thread.c
+src/debug/jdwp/sets/vm.c
+src/debug/jdwp/sets/list.c
+src/debug/jdwp/tcp.c
+src/debug/jdwp/debugger.c
+src/debug/jdwp/misc/header.c
+src/debug/jdwp/misc/id.c
+src/debug/jdwp/misc/location.c
+src/debug/jdwp/misc/types.c
+src/debug/stream.c
+src/debug/debugger.c
+src/decomp/instr/keyword.c
+src/decomp/instr/switch.c
+src/decomp/instr/ite.c
+src/decomp/context.c
+src/decomp/expression.c
+src/decomp/output.c
+src/decomp/instruction.c
+src/decomp/lang/java.c
+src/decomp/lang/asm.c
+src/decomp/expr/array.c
+src/decomp/expr/dalvik/array.c
+src/decomp/expr/access.c
+src/decomp/expr/immediate.c
+src/decomp/expr/cond.c
+src/decomp/expr/assign.c
+src/decomp/expr/pseudo.c
+src/decomp/expr/arithm.c
+src/decomp/expr/block.c
+src/decomp/expr/call.c
+src/decomp/expr/text.c
+src/decomp/expr/return.c
+src/decomp/expr/comp.c
+src/format/dwarf/abbrev.c
+src/format/dwarf/dwarf.c
+src/format/dwarf/utils.c
+src/format/dwarf/info.c
+src/format/dwarf/d_dwarf.c
+src/format/mangling/context.c
+src/format/mangling/demangler.c
+src/format/mangling/libjavamangling_la-java_gram.c
+src/format/mangling/itanium/abi.c
+src/format/mangling/itanium/context.c
+src/format/mangling/itanium/component.c
+src/format/mangling/libjavamangling_la-java_tok.c
+src/format/executable.c
+src/format/part.c
+src/format/dbg_format.c
+src/format/pe/pe.c
+src/format/pe/symbols.c
+src/format/pe/section.c
+src/format/pe/pe-int.c
+src/format/exe_format.c
+src/format/symbol.c
+src/format/dex/method.c
+src/format/dex/dex.c
+src/format/dex/dex-int.c
+src/format/dex/pool.c
+src/format/dex/class.c
+src/format/elf/program.c
+src/format/elf/helper_mips.c
+src/format/elf/symbols.c
+src/format/elf/elf.c
+src/format/elf/elf-int.c
+src/format/elf/section.c
+src/format/elf/strings.c
+src/format/elf/helper_x86.c
+src/format/format.c
+src/format/java/attribute.c
+src/format/java/field.c
+src/format/java/method.c
+src/format/java/java.c
+src/format/java/e_java.c
+src/format/java/pool.c
+src/format/java/java-int.c
+src/dlg_sections.c
+src/analysis/binary.c
+src/analysis/disass/rank.c
+src/analysis/disass/output.c
+src/analysis/disass/macro.c
+src/analysis/disass/loop.c
+src/analysis/disass/fetch.c
+src/analysis/disass/limit.c
+src/analysis/disass/links.c
+src/analysis/disass/disassembler.c
+src/analysis/blocks/virtual.c
+src/analysis/blocks/raccess.c
+src/analysis/blocks/flow.c
+src/analysis/decomp/decompiler.c
+src/analysis/decomp/il.c
+src/analysis/decomp/cmerge.c
+src/analysis/decomp/reduce.c
+src/analysis/type.c
+src/analysis/db/collection.c
+src/analysis/db/cdb.c
+src/analysis/db/bookmark.c
+src/analysis/db/client.c
+src/analysis/db/core.c
+src/analysis/db/server.c
+src/analysis/roptions.c
+src/analysis/block.c
+src/analysis/routine.c
+src/analysis/variable.c
+src/analysis/binaries/file.c
+src/analysis/types/encaps.c
+src/analysis/types/cse.c
+src/analysis/types/literal.c
+src/analysis/types/template.c
+src/analysis/types/basic.c
+src/dialogs/about.c
+src/dialogs/binparts.c
+src/dialogs/export.c
+src/dialogs/storage.c
+src/dialogs/goto.c
+src/dialogs/shellcode.c
+src/dialogs/plugins.c
src/gtkext/gtkdockstation.c
+src/gtkext/gtklinkrenderer.c
+src/gtkext/easygtk.c
+src/gtkext/gtksourceview.c
+src/gtkext/gtkbinarystrip.c
+src/gtkext/gtkblockview.c
src/gtkext/gtkbufferview.c
-src/gtkext/gtkdockpanel.c
src/gtkext/gtkextstatusbar.c
-src/gtkext/gtkgraphview.c
-src/gtkext/gtksourceview.c
src/gtkext/support.c
-src/gtkext/iodamarshal.c
-src/gtkext/gtkblockview.c
-src/gtkext/gtklinkrenderer.c
+src/gtkext/gtkviewpanel.c
+src/gtkext/gtkgraphview.c
+src/gtkext/graph/nodes/virtual.c
+src/gtkext/graph/nodes/flow.c
+src/gtkext/graph/ranks.c
+src/gtkext/graph/layout.c
+src/gtkext/graph/dot.c
+src/gtkext/graph/edge.c
+src/gtkext/graph/node.c
+src/main.c
+src/project.c
+src/configuration.c
+src/editor.c
diff --git a/po/fr.po b/po/fr.po
index 9530c59..8103b74 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: openida 0.0.1\n"
"Report-Msgid-Bugs-To: nocbos@gmail.com\n"
-"POT-Creation-Date: 2012-07-08 13:15+0200\n"
+"POT-Creation-Date: 2014-06-14 10:29+0200\n"
"PO-Revision-Date: 2010-11-04 16:11+0100\n"
"Last-Translator: cyrille <nocbos@gmail.com>\n"
"Language-Team: French\n"
@@ -17,621 +17,795 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: src/plugins/pyoida/py_log.c:118
-msgid "Invalid type of message"
+#: src/plugins/pglist.c:283
+#, c-format
+msgid "Initialization of plugin '%s' failed !"
msgstr ""
-#: src/debug/jdwp/tcp.c:191
+#: src/plugins/plugin.c:176
#, c-format
-msgid "Error while connecting to the JDWP server at %s:%s."
-msgstr "Erreur lors de la connexion au serveur JDWP sur %s:%s."
+msgid "Error while loading the plugin candidate '%s' : %s"
+msgstr ""
-#: src/debug/jdwp/tcp.c:197
+#: src/plugins/plugin.c:184
#, c-format
-msgid "Connected to %s:%hd."
-msgstr "Connecté à %s:%hd."
+msgid "No 'get_plugin_name' entry in plugin candidate '%s'"
+msgstr ""
-#: src/debug/jdwp/tcp.c:215
-msgid "Failure in the first JDWP handshake."
-msgstr "Echec des premiers échanges JDWP."
+#: src/plugins/plugin.c:244
+#, c-format
+msgid "Loaded the '<b>%s</b>' from the '<b>%s</b>' directory"
+msgstr ""
-#: src/debug/jdwp/debugger.c:213
+#: src/arch/dalvik/operands/pool.c:207 src/arch/dalvik/operands/pool.c:209
#, c-format
-msgid "The debugger is '%s' (JRE %d.%d; VM %s)."
-msgstr "Le débogueur est '%s' (JRE %d.%d ; VM %s)."
+msgid "<bad string index (%d)>"
+msgstr ""
-#: src/analysis/decomp/decompiler.c:77
-msgid "Binary data decompiled by Chrysalide"
-msgstr "Données binaires décompilées par Chrysalide"
+#: src/arch/dalvik/operands/pool.c:234 src/arch/dalvik/operands/pool.c:236
+#, c-format
+msgid "<bad type index (%d)>"
+msgstr ""
-#: src/analysis/decomp/decompiler.c:81 src/analysis/disass/disassembler.c:314
-msgid "Chrysalide is free software - © 2008-2012 Cyrille Bagard"
-msgstr "Chrysalide est un Logiciel Libre - © 2008-2012 Cyrille Bagard"
+#: src/arch/dalvik/operands/pool.c:265 src/arch/dalvik/operands/pool.c:267
+#, c-format
+msgid "<bad field index (%d)>"
+msgstr ""
-#: src/analysis/decomp/decompiler.c:90
-msgid "whole binary"
+#: src/arch/dalvik/operands/pool.c:292 src/arch/dalvik/operands/pool.c:294
+#, c-format
+msgid "<bad method index (%d)>"
msgstr ""
-#: src/analysis/decomp/decompiler.c:92 src/analysis/decomp/decompiler.c:95
-#: src/analysis/disass/disassembler.c:322
-#: src/analysis/disass/disassembler.c:325 src/dialogs/export.c:311
-msgid "File: "
-msgstr "Fichier: "
+#: src/gui/tb/source.c:85
+msgid " Source: "
+msgstr ""
-#: src/analysis/binary.c:357
-msgid "default"
+#: src/gui/tb/source.c:116
+msgid "Source files"
msgstr ""
-#: src/analysis/binary.c:416
-#, c-format
-msgid "Opening '%s' file..."
+#: src/gui/tb/portions.c:132
+msgid "Portions"
msgstr ""
-#: src/analysis/binary.c:429
-msgid "Unknown binary format"
+#: src/gui/panels/symbols.c:218
+msgid "List"
msgstr ""
-#: src/analysis/binary.c:437
-msgid "Detected architecture: ARM"
+#: src/gui/panels/symbols.c:221
+msgid "Show symbols using a list view"
msgstr ""
-#: src/analysis/binary.c:440
-msgid "Detected architecture: Dalvik Virtual Machine"
+#: src/gui/panels/symbols.c:224
+msgid "Tree"
msgstr ""
-#: src/analysis/binary.c:443
-msgid "Detected architecture: Java Virtual Machine"
+#: src/gui/panels/symbols.c:227
+msgid "Show symbols using a tree view"
msgstr ""
-#: src/analysis/binary.c:446
-msgid ""
-"Detected architecture: Microprocessor without Interlocked Pipeline Stages"
+#: src/gui/panels/symbols.c:234
+msgid "Collapse"
msgstr ""
-#: src/analysis/binary.c:449
-msgid "Detected architecture: i386"
+#: src/gui/panels/symbols.c:237
+msgid "Collapse all symbol nodes in the tree view"
msgstr ""
-#: src/analysis/binary.c:452
-msgid "Unknown architecture"
+#: src/gui/panels/symbols.c:240
+msgid "Expand"
msgstr ""
-#: src/analysis/binary.c:1265 src/analysis/binary.c:1268
-msgid "Group"
+#: src/gui/panels/symbols.c:243
+msgid "Expand all symbol nodes in the tree view"
msgstr ""
-#: src/analysis/disass/disassembler.c:215
-msgid "Disassembling..."
+#: src/gui/panels/symbols.c:246
+msgid "Classes"
msgstr ""
-#: src/analysis/disass/disassembler.c:234
-#, c-format
-msgid "Disassembled instructions : %u %% (%u / %d)"
+#: src/gui/panels/symbols.c:249
+msgid "Show all classes in the tree view"
msgstr ""
-#: src/analysis/disass/disassembler.c:242
-msgid "Establishing links..."
+#: src/gui/panels/symbols.c:258
+msgid "Filter symbols using POSIX extended regular expressions"
msgstr ""
-#: src/analysis/disass/disassembler.c:250
-msgid "Finding remaining limits..."
+#: src/gui/panels/symbols.c:346
+#, fuzzy
+msgid "Binary symbols"
+msgstr "Code binaire"
+
+#: src/gui/panels/glance.c:154 src/gui/panels/glance.c:202
+msgid "Glance"
msgstr ""
-#: src/analysis/disass/disassembler.c:260
-msgid "Printing disassembled code..."
+#: src/gui/panels/welcome.c:149
+msgid "Welcome"
msgstr ""
-#: src/analysis/disass/disassembler.c:310
-msgid "Disassembly generated by Chrysalide"
-msgstr "Désassemblage généré par Chrysalide"
+#: src/gui/panels/strings.c:173 src/panels/breaks.c:189
+#: src/panels/strings.c:87
+msgid "Address"
+msgstr ""
-#: src/analysis/disass/disassembler.c:339
-#: src/analysis/disass/disassembler.c:342
-msgid "Sha256: "
+#: src/gui/panels/strings.c:178 src/panels/breaks.c:209
+#: src/panels/strings.c:91
+msgid "String"
msgstr ""
-#: src/dialogs/plugins.c:106
-msgid "Plugins selection"
+#: src/gui/panels/strings.c:190
+msgid "Find references..."
msgstr ""
-#: src/dialogs/plugins.c:214
-msgid "Author:"
+#: src/gui/panels/strings.c:218
+msgid "Strings"
msgstr ""
-#: src/dialogs/plugins.c:219
-msgid "label8"
+#: src/gui/panels/log.c:71
+msgid "Misc information"
msgstr ""
-#: src/dialogs/plugins.c:223
-msgid "Version:"
+#: src/gui/status.c:219
+msgid "Address "
msgstr ""
-#: src/dialogs/plugins.c:228
-msgid "label9"
+#: src/gui/status.c:233
+msgid " at "
msgstr ""
-#: src/dialogs/plugins.c:232
-msgid "URL:"
+#: src/gui/status.c:235
+msgid "+"
msgstr ""
-#: src/dialogs/plugins.c:237
-msgid "label10"
+#: src/gui/menus/binary.c:66
+msgid "_Binary"
+msgstr "_Binaire"
+
+#: src/gui/menus/binary.c:72
+msgid "Storage..."
msgstr ""
-#: src/dialogs/plugins.c:251
-msgid "label12"
+#: src/gui/menus/binary.c:76
+msgid "Export..."
+msgstr "Exportation..."
+
+#: src/gui/menus/debug.c:63
+msgid "_Debug"
+msgstr "_Débogage"
+
+#: src/gui/menus/debug.c:69 src/gui/menus/debug.c:108
+#: src/gui/menus/debug.c:123 src/dialogs/binparts.c:220
+msgid "Start"
+msgstr "Démarrer"
+
+#: src/gui/menus/debug.c:104
+msgid "No available debug module for this binary !"
+msgstr "Pas de module de débogage disponible pour ce binaire !"
+
+#: src/gui/menus/debug.c:112
+msgid "Failed to initialize the debugger."
+msgstr "Echec de l'initialisation du débogueur."
+
+#: src/gui/menus/debug.c:116
+msgid "Stop"
+msgstr "Arrêter"
+
+#: src/gui/menus/help.c:60
+msgid "_Help"
+msgstr "_Aide"
+
+#: src/gui/menus/help.c:66 src/dialogs/about.c:75
+msgid "About"
+msgstr "A propos"
+
+#: src/gui/menus/edition.c:61
+msgid "_Edition"
msgstr ""
-#: src/dialogs/plugins.c:256
-msgid "<b>Action</b>"
+#: src/gui/menus/edition.c:67
+msgid "Go to address..."
msgstr ""
-#: src/dialogs/plugins.c:261
-msgid "<b>Details:</b>"
+#: src/gui/menus/view.c:70
+msgid "_View"
+msgstr "Affichage"
+
+#: src/gui/menus/view.c:76
+msgid "Text view"
+msgstr "Vue binaire"
+
+#: src/gui/menus/view.c:84
+msgid "Graph view"
+msgstr "Vue graphique"
+
+#: src/gui/menus/view.c:92
+msgid "Source code"
+msgstr "Code source"
+
+#: src/gui/menus/view.c:101 src/dialogs/export.c:455
+#: src/dialogs/shellcode.c:784
+msgid "Virtual address"
+msgstr "Adresse virtuelle"
+
+#: src/gui/menus/view.c:105 src/dialogs/export.c:459
+#: src/dialogs/shellcode.c:788
+msgid "Binary code"
+msgstr "Code binaire"
+
+#: src/gui/menus/file.c:74
+msgid "_File"
+msgstr "_Fichier"
+
+#: src/gui/menus/file.c:80
+msgid "New project"
+msgstr "Nouveau projet"
+
+#: src/gui/menus/file.c:88
+msgid "Open project"
+msgstr "Ouvrir un projet"
+
+#: src/gui/menus/file.c:93
+msgid "Recent projects..."
+msgstr "Projets récents..."
+
+#: src/gui/menus/file.c:109
+msgid "Save project"
+msgstr "Enregistrer le projet"
+
+#: src/gui/menus/file.c:114
+msgid "Save project as..."
+msgstr "Enregistrer le projet sous..."
+
+#: src/gui/menus/file.c:121
+msgid "Quit"
+msgstr "Quitter"
+
+#: src/gui/menus/file.c:175
+msgid "Open a project"
+msgstr "Ouvrir un projet"
+
+#: src/gui/menus/file.c:259
+msgid "Save the project as..."
+msgstr "Enregistrer le projet sous..."
+
+#: src/gui/menus/project.c:74
+msgid "_Project"
msgstr ""
-#: src/dialogs/plugins.c:293
-msgid "Apply"
+#: src/gui/menus/project.c:80
+msgid "Add a binary..."
msgstr ""
-#: src/dialogs/plugins.c:314
-msgid "Cancel"
+#: src/gui/menus/project.c:86
+#, fuzzy
+msgid "Shellcode"
+msgstr "Code source"
+
+#: src/gui/menus/project.c:90
+#, fuzzy
+msgid "File"
+msgstr "_Fichier"
+
+#: src/gui/menus/project.c:94
+msgid "Remove a binary"
msgstr ""
-#: src/dialogs/about.c:69 src/gui/menus/help.c:66
-msgid "About"
-msgstr "A propos"
+#: src/gui/menus/project.c:209 src/gui/menus/project.c:275
+msgid "Open a binary file"
+msgstr ""
-#: src/dialogs/binparts.c:138
-msgid "Content to display"
+#: src/glibext/gbinportion.c:833
+msgid "Localisation"
msgstr ""
-#: src/dialogs/binparts.c:160
-msgid "Model :"
+#: src/glibext/gbinportion.c:836
+msgid "physical: from "
msgstr ""
-#: src/dialogs/binparts.c:210
-msgid "Active"
+#: src/glibext/gbinportion.c:839 src/glibext/gbinportion.c:847
+msgid " to "
msgstr ""
-#: src/dialogs/binparts.c:215
-msgid "Name"
+#: src/glibext/gbinportion.c:844
+msgid "memory: from "
msgstr ""
-#: src/dialogs/binparts.c:220 src/gui/menus/debug.c:69
-#: src/gui/menus/debug.c:108 src/gui/menus/debug.c:123
-msgid "Start"
-msgstr "Démarrer"
+#: src/glibext/gbinportion.c:855
+msgid "Rights"
+msgstr ""
-#: src/dialogs/binparts.c:224
-msgid "End"
+#: src/panels/breaks.c:156
+msgid "Breakpoints"
msgstr ""
-#: src/dialogs/binparts.c:282
-msgid "Default"
+#: src/panels/registers.c:101
+msgid "Registers:"
msgstr ""
-#: src/dialogs/binparts.c:283
-msgid "Routines"
+#: src/panels/registers.c:180
+msgid "Segments:"
msgstr ""
-#: src/dialogs/binparts.c:284
-msgid "User"
+#: src/debug/jdwp/tcp.c:191
+#, c-format
+msgid "Error while connecting to the JDWP server at %s:%s."
+msgstr "Erreur lors de la connexion au serveur JDWP sur %s:%s."
+
+#: src/debug/jdwp/tcp.c:197
+#, c-format
+msgid "Connected to %s:%hd."
+msgstr "Connecté à %s:%hd."
+
+#: src/debug/jdwp/tcp.c:215
+msgid "Failure in the first JDWP handshake."
+msgstr "Echec des premiers échanges JDWP."
+
+#: src/debug/jdwp/debugger.c:213
+#, c-format
+msgid "The debugger is '%s' (JRE %d.%d; VM %s)."
+msgstr "Le débogueur est '%s' (JRE %d.%d ; VM %s)."
+
+#: src/format/dwarf/info.c:483
+msgid "[no name]"
msgstr ""
-#: src/dialogs/add_shellcode.c:131
-msgid "Shellcode assistant"
+#: src/format/exe_format.c:242 src/format/format.c:465
+msgid "ELF"
msgstr ""
-#: src/dialogs/add_shellcode.c:274 src/dialogs/add_shellcode.c:500
-msgid "No code"
+#: src/format/exe_format.c:243 src/format/format.c:466
+msgid "Java"
msgstr ""
-#: src/dialogs/add_shellcode.c:281 src/dialogs/add_shellcode.c:795
-msgid "Code"
-msgstr "Code"
+#: src/format/exe_format.c:244
+msgid "Portable Executable"
+msgstr ""
-#: src/dialogs/add_shellcode.c:489
-msgid "<span color=\"red\"><b>Error while decoding</b></span>"
+#: src/format/exe_format.c:301 src/format/format.c:533
+#, c-format
+msgid "%s is matching..."
+msgstr ""
+
+#: src/format/elf/symbols.c:99
+msgid "Binary is dynamically linked"
msgstr ""
-#: src/dialogs/add_shellcode.c:493
+#: src/format/elf/symbols.c:106
+msgid "Binary is statically linked"
+msgstr ""
+
+#: src/format/elf/elf.c:190
#, c-format
-msgid "<span color=\"#00cc00\"><b>Decoding OK (%d %s)</b></span>"
+msgid ""
+"Corrupted program header size (%hu); fixed ! -- replacing 0x%04hx by 0x"
+"%04hx at offset 0x%x"
msgstr ""
-#: src/dialogs/add_shellcode.c:494
-msgid "bytes"
+#: src/format/elf/elf.c:199
+#, c-format
+msgid ""
+"Corrupted section header size (%hu); fixed ! -- replacing 0x%04hx by 0x"
+"%04hx at offset 0x%x"
msgstr ""
-#: src/dialogs/add_shellcode.c:494
-msgid "byte"
+#: src/format/elf/elf.c:348
+msgid "Segment"
msgstr ""
-#: src/dialogs/add_shellcode.c:546
-msgid "Architecture:"
+#: src/format/elf/elf.c:395 src/format/elf/elf.c:397
+msgid "Section"
msgstr ""
-#: src/dialogs/add_shellcode.c:552
-msgid "x86"
+#: src/format/format.c:463
+msgid "Dalvik Executable"
msgstr ""
-#: src/dialogs/add_shellcode.c:558
-msgid "Register size:"
+#: src/format/format.c:467
+msgid "PE"
msgstr ""
-#: src/dialogs/add_shellcode.c:564
-msgid "32 bits"
+#: src/format/java/attribute.c:239
+#, c-format
+msgid "Attribute name not supported: '%s'"
msgstr ""
-#: src/dialogs/add_shellcode.c:565
-msgid "16 bits"
+#: src/format/java/attribute.c:243
+#, c-format
+msgid "Size indication of the attribute '%s' not verified: %d vs %d"
msgstr ""
-#: src/dialogs/add_shellcode.c:572
-msgid "Architecture"
+#: src/analysis/disass/disassembler.c:212
+msgid "Disassembling..."
msgstr ""
-#: src/dialogs/add_shellcode.c:629
-#, fuzzy
-msgid "Format : "
-msgstr "Format : "
+#: src/analysis/disass/disassembler.c:231
+#, c-format
+msgid "Disassembled instructions : %u %% (%u / %d)"
+msgstr ""
-#: src/dialogs/add_shellcode.c:635 src/dialogs/export.c:301
-msgid "Simple text"
-msgstr "Texte simple"
+#: src/analysis/disass/disassembler.c:241
+msgid "Establishing links..."
+msgstr ""
+
+#: src/analysis/disass/disassembler.c:251
+msgid "Finding remaining limits..."
+msgstr ""
+
+#: src/analysis/disass/disassembler.c:263
+msgid "Detecting loops..."
+msgstr ""
-#: src/dialogs/add_shellcode.c:645
+#: src/analysis/disass/disassembler.c:271
+msgid "Grouping routines instructions..."
+msgstr ""
+
+#: src/analysis/disass/disassembler.c:283
+msgid "Ranking each instructions block..."
+msgstr ""
+
+#: src/analysis/disass/disassembler.c:295
+msgid "Printing disassembled code..."
+msgstr ""
+
+#: src/analysis/disass/disassembler.c:347
+msgid "Disassembly generated by Chrysalide"
+msgstr "Désassemblage généré par Chrysalide"
+
+#: src/analysis/disass/disassembler.c:351
#, fuzzy
-msgid "File : "
+msgid "Chrysalide is free software - © 2008-2014 Cyrille Bagard"
+msgstr "Chrysalide est un Logiciel Libre - © 2008-2012 Cyrille Bagard"
+
+#: src/analysis/disass/disassembler.c:359
+#: src/analysis/disass/disassembler.c:362 src/analysis/decomp/decompiler.c:96
+#: src/analysis/decomp/decompiler.c:99 src/dialogs/export.c:311
+msgid "File: "
msgstr "Fichier: "
-#: src/dialogs/add_shellcode.c:657 src/dialogs/export.c:323
-msgid "Output"
-msgstr "Sortie"
+#: src/analysis/disass/disassembler.c:376
+#: src/analysis/disass/disassembler.c:379
+msgid "Sha256: "
+msgstr ""
-#: src/dialogs/add_shellcode.c:723 src/dialogs/export.c:389
-msgid "Choose an output filename"
-msgstr "Choisir un fichier de sortie"
+#: src/analysis/decomp/decompiler.c:81
+msgid "Binary data decompiled by Chrysalide"
+msgstr "Données binaires décompilées par Chrysalide"
-#: src/dialogs/add_shellcode.c:784
-#, fuzzy
-msgid "<b>Lines to process</b>"
-msgstr "<b>Eléments à afficher</b>"
+#: src/analysis/decomp/decompiler.c:85
+msgid "Chrysalide is free software - © 2008-2012 Cyrille Bagard"
+msgstr "Chrysalide est un Logiciel Libre - © 2008-2012 Cyrille Bagard"
-#: src/dialogs/add_shellcode.c:791
-msgid "Prologue"
+#: src/analysis/decomp/decompiler.c:94
+msgid "whole binary"
msgstr ""
-#: src/dialogs/add_shellcode.c:799
-msgid "Comments"
+#: src/analysis/db/server.c:390
+#, c-format
+msgid "Server started and listening at %s:%hu"
msgstr ""
-#: src/dialogs/add_shellcode.c:805 src/dialogs/export.c:448
-msgid "<b>Items to display</b>"
-msgstr "<b>Eléments à afficher</b>"
+#: src/analysis/binaries/file.c:171
+#, c-format
+msgid "Opening '%s' file..."
+msgstr ""
-#: src/dialogs/add_shellcode.c:812 src/dialogs/export.c:455
-#: src/gui/menus/view.c:101
-msgid "Virtual address"
-msgstr "Adresse virtuelle"
+#: src/analysis/binaries/file.c:215
+msgid "Unknown binary format"
+msgstr ""
-#: src/dialogs/add_shellcode.c:816 src/dialogs/export.c:459
-#: src/gui/menus/view.c:105
-msgid "Binary code"
-msgstr "Code binaire"
+#: src/analysis/binaries/file.c:222
+msgid "Detected architecture: ARM"
+msgstr ""
-#: src/dialogs/add_shellcode.c:820 src/dialogs/export.c:463
-msgid "Assembly code"
-msgstr "Code d'assembleur"
+#: src/analysis/binaries/file.c:225
+msgid "Detected architecture: Dalvik Virtual Machine"
+msgstr ""
-#: src/dialogs/add_shellcode.c:827 src/dialogs/export.c:470
-msgid "Exported content"
-msgstr "Contenu exporté"
+#: src/analysis/binaries/file.c:228
+msgid "Detected architecture: Java Virtual Machine"
+msgstr ""
-#: src/dialogs/export.c:114
-msgid "Export assistant"
-msgstr "Assistant d'exportation"
+#: src/analysis/binaries/file.c:231
+msgid ""
+"Detected architecture: Microprocessor without Interlocked Pipeline Stages"
+msgstr ""
-#: src/dialogs/export.c:213
-msgid "Exporting binary lines..."
-msgstr "Exportation des lignes binaires..."
+#: src/analysis/binaries/file.c:234
+msgid "Detected architecture: i386"
+msgstr ""
-#: src/dialogs/export.c:295
-msgid "Format: "
-msgstr "Format : "
+#: src/analysis/binaries/file.c:237
+msgid "Unknown architecture"
+msgstr ""
-#: src/panel/strings.c:87 src/panels/breaks.c:188 src/panels/strings.c:87
-msgid "Address"
+#: src/dialogs/binparts.c:138
+msgid "Content to display"
msgstr ""
-#: src/panel/strings.c:91 src/panels/breaks.c:208 src/panels/strings.c:91
-msgid "String"
+#: src/dialogs/binparts.c:160
+msgid "Model :"
msgstr ""
-#: src/panel/registers.c:100 src/panels/registers.c:101
-msgid "Registers:"
+#: src/dialogs/binparts.c:210
+msgid "Active"
msgstr ""
-#: src/panel/registers.c:179 src/panels/registers.c:180
-msgid "Segments:"
+#: src/dialogs/binparts.c:215
+msgid "Name"
msgstr ""
-#: src/gui/menus/file.c:74
-msgid "_File"
-msgstr "_Fichier"
+#: src/dialogs/binparts.c:224
+msgid "End"
+msgstr ""
-#: src/gui/menus/file.c:80
-msgid "New project"
-msgstr "Nouveau projet"
+#: src/dialogs/binparts.c:282
+msgid "Default"
+msgstr ""
-#: src/gui/menus/file.c:88
-msgid "Open project"
-msgstr "Ouvrir un projet"
+#: src/dialogs/binparts.c:283
+msgid "Routines"
+msgstr ""
-#: src/gui/menus/file.c:93
-msgid "Recent projects..."
-msgstr "Projets récents..."
+#: src/dialogs/binparts.c:284
+msgid "User"
+msgstr ""
-#: src/gui/menus/file.c:109
-msgid "Save project"
-msgstr "Enregistrer le projet"
+#: src/dialogs/export.c:114
+msgid "Export assistant"
+msgstr "Assistant d'exportation"
-#: src/gui/menus/file.c:114
-msgid "Save project as..."
-msgstr "Enregistrer le projet sous..."
+#: src/dialogs/export.c:213
+msgid "Exporting binary lines..."
+msgstr "Exportation des lignes binaires..."
-#: src/gui/menus/file.c:121
-msgid "Quit"
-msgstr "Quitter"
+#: src/dialogs/export.c:295
+msgid "Format: "
+msgstr "Format : "
-#: src/gui/menus/file.c:175
-msgid "Open a project"
-msgstr "Ouvrir un projet"
+#: src/dialogs/export.c:301 src/dialogs/shellcode.c:607
+msgid "Simple text"
+msgstr "Texte simple"
-#: src/gui/menus/file.c:259
-msgid "Save the project as..."
-msgstr "Enregistrer le projet sous..."
+#: src/dialogs/export.c:323 src/dialogs/shellcode.c:629
+msgid "Output"
+msgstr "Sortie"
-#: src/gui/menus/view.c:70 src/editor.c:247
-msgid "_View"
-msgstr "Affichage"
+#: src/dialogs/export.c:389 src/dialogs/shellcode.c:695
+msgid "Choose an output filename"
+msgstr "Choisir un fichier de sortie"
-#: src/gui/menus/view.c:76
-msgid "Text view"
-msgstr "Vue binaire"
+#: src/dialogs/export.c:448 src/dialogs/shellcode.c:777
+msgid "<b>Items to display</b>"
+msgstr "<b>Eléments à afficher</b>"
-#: src/gui/menus/view.c:84
-msgid "Graph view"
-msgstr "Vue graphique"
+#: src/dialogs/export.c:463 src/dialogs/shellcode.c:792
+msgid "Assembly code"
+msgstr "Code d'assembleur"
-#: src/gui/menus/view.c:92
-msgid "Source code"
-msgstr "Code source"
+#: src/dialogs/export.c:470 src/dialogs/shellcode.c:799
+msgid "Exported content"
+msgstr "Contenu exporté"
-#: src/gui/menus/binary.c:62 src/editor.c:273
-msgid "_Binary"
-msgstr "_Binaire"
+#: src/dialogs/storage.c:139
+msgid "Features"
+msgstr ""
-#: src/gui/menus/binary.c:68
-msgid "Export..."
-msgstr "Exportation..."
+#: src/dialogs/storage.c:149 src/dialogs/storage.c:564
+msgid "Local storage"
+msgstr ""
-#: src/gui/menus/help.c:60
-msgid "_Help"
-msgstr "_Aide"
+#: src/dialogs/storage.c:151 src/dialogs/storage.c:567
+#: src/dialogs/storage.c:621
+msgid "Remote storage"
+msgstr ""
-#: src/gui/menus/project.c:66
-msgid "_Project"
+#: src/dialogs/storage.c:153 src/dialogs/storage.c:570
+#: src/dialogs/storage.c:623
+msgid "Local storage with remote access"
msgstr ""
-#: src/gui/menus/project.c:72
-msgid "Add a binary..."
+#: src/dialogs/storage.c:160 src/dialogs/storage.c:201
+msgid "Storage"
msgstr ""
-#: src/gui/menus/project.c:78
+#: src/dialogs/storage.c:222
#, fuzzy
-msgid "File"
-msgstr "_Fichier"
+msgid "<b>Identity</b>"
+msgstr "<b>Eléments à afficher</b>"
-#: src/gui/menus/project.c:82
-msgid "Remove a binary"
+#: src/dialogs/storage.c:229
+msgid "Username: "
msgstr ""
-#: src/gui/menus/project.c:176
-msgid "Open a binary file"
+#: src/dialogs/storage.c:237
+msgid "<b>Server to contact</b>"
msgstr ""
-#: src/gui/menus/debug.c:63 src/editor.c:287
-msgid "_Debug"
-msgstr "_Débogage"
-
-#: src/gui/menus/debug.c:104
-msgid "No available debug module for this binary !"
-msgstr "Pas de module de débogage disponible pour ce binaire !"
-
-#: src/gui/menus/debug.c:112
-msgid "Failed to initialize the debugger."
-msgstr "Echec de l'initialisation du débogueur."
+#: src/dialogs/storage.c:245
+msgid "Use a remote server:"
+msgstr ""
-#: src/gui/menus/debug.c:116
-msgid "Stop"
-msgstr "Arrêter"
+#: src/dialogs/storage.c:254
+msgid "Host: "
+msgstr ""
-#: src/gui/panels/log.c:70
-msgid "Misc information"
+#: src/dialogs/storage.c:261
+msgid "Port:"
msgstr ""
-#: src/gui/panels/symbols.c:300
-#, fuzzy
-msgid "Binary symbols"
-msgstr "Code binaire"
+#: src/dialogs/storage.c:549 src/dialogs/shellcode.c:771
+msgid "Comments"
+msgstr ""
-#: src/gui/tb/source.c:85
-msgid " Source: "
+#: src/dialogs/storage.c:552
+msgid "Segments display"
msgstr ""
-#: src/gui/tb/source.c:116
-msgid "Source files"
+#: src/dialogs/storage.c:555
+msgid "Bookmarks"
msgstr ""
-#: src/format/dwarf/info.c:483
-msgid "[no name]"
+#: src/dialogs/goto.c:155
+#, fuzzy
+msgid "Go to address"
+msgstr "Adresse virtuelle"
+
+#: src/dialogs/goto.c:168
+msgid "Enter the value of the target address:"
msgstr ""
-#: src/format/elf/elf.c:182
-#, c-format
-msgid ""
-"Corrupted program header size (%hu); fixed ! -- replacing 0x%04hx by 0x"
-"%04hx at offset 0x%x"
+#: src/dialogs/shellcode.c:131
+msgid "Shellcode assistant"
msgstr ""
-#: src/format/elf/elf.c:191
-#, c-format
+#: src/dialogs/shellcode.c:262
msgid ""
-"Corrupted section header size (%hu); fixed ! -- replacing 0x%04hx by 0x"
-"%04hx at offset 0x%x"
+"Paste here the raw C code containing the shellcode.\r\n"
+"All content between quotes will be extracted."
msgstr ""
-#: src/format/elf/symbols.c:99
-msgid "Binary is dynamically linked"
+#: src/dialogs/shellcode.c:279 src/dialogs/shellcode.c:461
+msgid "No code"
msgstr ""
-#: src/format/elf/symbols.c:106
-msgid "Binary is statically linked"
-msgstr ""
+#: src/dialogs/shellcode.c:286 src/dialogs/shellcode.c:767
+msgid "Code"
+msgstr "Code"
-#: src/format/exe_format.c:242 src/format/format.c:487
-msgid "ELF"
+#: src/dialogs/shellcode.c:448
+msgid "<span color=\"red\"><b>Error while decoding</b></span>"
msgstr ""
-#: src/format/exe_format.c:243 src/format/format.c:488
-msgid "Java"
+#: src/dialogs/shellcode.c:452
+msgid "<span color=\"#00cc00\"><b>Decoding OK ("
msgstr ""
-#: src/format/exe_format.c:244
-msgid "Portable Executable"
+#: src/dialogs/shellcode.c:454
+msgid "bytes"
msgstr ""
-#: src/format/exe_format.c:301 src/format/format.c:555
-#, c-format
-msgid "%s is matching..."
+#: src/dialogs/shellcode.c:454
+msgid "byte"
msgstr ""
-#: src/format/java/attribute.c:239
-#, c-format
-msgid "Attribute name not supported: '%s'"
+#: src/dialogs/shellcode.c:518
+msgid "Architecture:"
msgstr ""
-#: src/format/java/attribute.c:243
-#, c-format
-msgid "Size indication of the attribute '%s' not verified: %d vs %d"
+#: src/dialogs/shellcode.c:524
+msgid "x86"
msgstr ""
-#: src/format/format.c:485
-msgid "Dalvik Executable"
+#: src/dialogs/shellcode.c:530
+msgid "Register size:"
msgstr ""
-#: src/format/format.c:489
-msgid "PE"
+#: src/dialogs/shellcode.c:536
+msgid "32 bits"
msgstr ""
-#: src/editor.c:213
-msgid "Chrysalide"
+#: src/dialogs/shellcode.c:537
+msgid "16 bits"
msgstr ""
-#: src/editor.c:260
-msgid "Toolbar"
+#: src/dialogs/shellcode.c:544
+msgid "Architecture"
msgstr ""
-#: src/editor.c:266
-msgid "Source file"
+#: src/dialogs/shellcode.c:601
+#, fuzzy
+msgid "Format : "
+msgstr "Format : "
+
+#: src/dialogs/shellcode.c:617
+#, fuzzy
+msgid "File : "
+msgstr "Fichier: "
+
+#: src/dialogs/shellcode.c:756
+#, fuzzy
+msgid "<b>Lines to process</b>"
+msgstr "<b>Eléments à afficher</b>"
+
+#: src/dialogs/shellcode.c:763
+msgid "Prologue"
msgstr ""
-#: src/editor.c:280
-msgid "Select parts..."
+#: src/dialogs/plugins.c:106
+msgid "Plugins selection"
msgstr ""
-#: src/editor.c:283
-msgid "Select plugins..."
+#: src/dialogs/plugins.c:210
+msgid "Author:"
msgstr ""
-#: src/editor.c:294
-msgid "Start process"
+#: src/dialogs/plugins.c:215
+msgid "label8"
msgstr ""
-#: src/editor.c:297
-msgid "Pause process"
+#: src/dialogs/plugins.c:219
+msgid "Version:"
msgstr ""
-#: src/editor.c:300
-msgid "Resume process"
+#: src/dialogs/plugins.c:224
+msgid "label9"
msgstr ""
-#: src/editor.c:303
-msgid "Kill process"
+#: src/dialogs/plugins.c:228
+msgid "URL:"
msgstr ""
-#: src/editor.c:309
-msgid "Step into"
+#: src/dialogs/plugins.c:233
+msgid "label10"
msgstr ""
-#: src/editor.c:312
-msgid "Step over"
+#: src/dialogs/plugins.c:247
+msgid "label12"
msgstr ""
-#: src/editor.c:315
-msgid "Run until ret"
+#: src/dialogs/plugins.c:252
+msgid "<b>Action</b>"
msgstr ""
-#: src/editor.c:397
-msgid "Registers"
+#: src/dialogs/plugins.c:257
+msgid "<b>Details:</b>"
msgstr ""
-#: src/editor.c:417
-msgid "Strings"
+#: src/dialogs/plugins.c:288
+msgid "Apply"
msgstr ""
-#: src/editor.c:510
-msgid "The current project will be lost. Do you you want to save it ?"
+#: src/dialogs/plugins.c:308
+msgid "Cancel"
msgstr ""
-#: src/main.c:64
+#: src/main.c:70
#, c-format
msgid "Last compiled on %s at %s\n"
msgstr ""
-#: src/main.c:68
+#: src/main.c:74
#, c-format
msgid "Data directory: %s\n"
msgstr ""
-#: src/main.c:69
+#: src/main.c:75
#, c-format
msgid "Plugins directory: %s\n"
msgstr ""
-#: src/main.c:70
+#: src/main.c:76
#, c-format
msgid "Locale directory: %s\n"
msgstr ""
-#: src/panels/glimpse.c:105
-msgid "Glimpse"
-msgstr ""
-
-#: src/panels/breaks.c:155
-msgid "Breakpoints"
-msgstr ""
-
-#: src/arch/dalvik/operands/pool.c:210
-msgid "invalid type"
-msgstr ""
-
-#: src/arch/dalvik/operands/pool.c:231
-msgid "invalid field"
+#: src/editor.c:155
+msgid "Chrysalide"
msgstr ""
-#: src/arch/dalvik/operands/pool.c:247
-msgid "invalid method"
+#: src/editor.c:260
+msgid "The current project will be lost. Do you you want to save it ?"
msgstr ""
diff --git a/src/analysis/binaries/file.c b/src/analysis/binaries/file.c
index df145f7..ad140ab 100644
--- a/src/analysis/binaries/file.c
+++ b/src/analysis/binaries/file.c
@@ -66,9 +66,6 @@ static void g_file_binary_finalize(GFileBinary *);
/* Ecrit une sauvegarde du binaire dans un fichier XML. */
static bool g_file_binary_save(const GFileBinary *, xmlDocPtr, xmlXPathContextPtr, const char *);
-/* Fournit le fichier correspondant à l'élément binaire. */
-static const char *g_file_binary_get_filename(const GFileBinary *, bool);
-
/* Indique le type défini pour une description de fichier binaire. */
@@ -348,7 +345,7 @@ static bool g_file_binary_save(const GFileBinary *binary, xmlDocPtr xdoc, xmlXPa
* *
******************************************************************************/
-static const char *g_file_binary_get_filename(const GFileBinary *binary, bool full)
+const char *g_file_binary_get_filename(const GFileBinary *binary, bool full)
{
const char *result; /* Description à retourner */
diff --git a/src/analysis/binaries/file.h b/src/analysis/binaries/file.h
index d09c86d..40bc722 100644
--- a/src/analysis/binaries/file.h
+++ b/src/analysis/binaries/file.h
@@ -56,6 +56,9 @@ GLoadedBinary *g_file_binary_new_from_file(const char *);
/* Charge en mémoire le contenu d'un fichier à partir d'XML. */
GLoadedBinary *g_file_binary_new_from_xml(xmlXPathContextPtr, const char *);
+/* Fournit le fichier correspondant à l'élément binaire. */
+const char *g_file_binary_get_filename(const GFileBinary *, bool);
+
#endif /* _ANALYSIS_BINARIES_FILE_H */
diff --git a/src/arch/Makefile.am b/src/arch/Makefile.am
index 94c8305..e87247e 100644
--- a/src/arch/Makefile.am
+++ b/src/arch/Makefile.am
@@ -15,7 +15,8 @@ libarch_la_SOURCES = \
processor.h processor.c \
register-int.h \
register.h register.c \
- translate.h
+ translate.h \
+ vmpa.h vmpa.c
libarch_la_LIBADD = \
arm/libarcharm.la \
diff --git a/src/arch/vmpa.c b/src/arch/vmpa.c
new file mode 100644
index 0000000..24d5792
--- /dev/null
+++ b/src/arch/vmpa.c
@@ -0,0 +1,87 @@
+
+/* Chrysalide - Outil d'analyse de fichiers binaires
+ * vmpa.c - adressages virtuels ou physiques
+ *
+ * Copyright (C) 2014 Cyrille Bagard
+ *
+ * This file is part of Chrysalide.
+ *
+ * OpenIDA is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * OpenIDA is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Foobar. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "vmpa.h"
+
+
+#include <inttypes.h>
+#include <malloc.h>
+
+
+
+
+
+
+
+/******************************************************************************
+* *
+* Paramètres : phy = position dans la mémoire physique. *
+* virt = adresse dans la mémoire virtuelle. *
+* *
+* Description : Crée une localisation dans l'adressage mémoire. *
+* *
+* Retour : Adressage alloué en mémoire. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+vmpa2_t *make_vmpa(off_t phy, uint64_t virt)
+{
+ vmpa2_t *result; /* Structure à retourner */
+
+ result = (vmpa2_t *)calloc(1, sizeof(vmpa2_t));
+
+ result->physical = phy;
+ result->virtual = virt;
+
+ return result;
+
+}
+
+
+
+
+
+/******************************************************************************
+* *
+* Paramètres : addr = élément à initialiser. *
+* phy = position dans la mémoire physique. *
+* virt = adresse dans la mémoire virtuelle. *
+* *
+* Description : Initialise une localisation dans l'espace mémoire/physique. *
+* *
+* Retour : Adressage alloué en mémoire. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void init_vmpa(vmpa2_t *addr, off_t phy, uint64_t virt)
+{
+ addr->physical = phy;
+ addr->virtual = virt;
+
+}
+
+
diff --git a/src/arch/vmpa.h b/src/arch/vmpa.h
new file mode 100644
index 0000000..fa14fda
--- /dev/null
+++ b/src/arch/vmpa.h
@@ -0,0 +1,68 @@
+
+/* Chrysalide - Outil d'analyse de fichiers binaires
+ * vmpa.h - prototypes des adressages virtuels ou physiques
+ *
+ * Copyright (C) 2014 Cyrille Bagard
+ *
+ * This file is part of Chrysalide.
+ *
+ * OpenIDA is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * OpenIDA is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Foobar. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef _ARCH_VMPA_H
+#define _ARCH_VMPA_H
+
+
+#include <stdbool.h>
+#include <stdint.h>
+#include <sys/types.h>
+
+
+
+
+
+/* Adresse mémoire ou position physique */
+struct _vmpa2_t
+{
+ off_t physical; /* Position physique */
+ uint64_t virtual; /* Adresse virtuelle */
+
+};
+
+
+
+/* Adresse mémoire ou position physique */
+typedef struct _vmpa2_t vmpa2_t;
+
+
+/* Initialise une localisation dans l'espace mémoire/physique. */
+void init_vmpa(vmpa2_t *, off_t, uint64_t);
+
+
+
+
+/* Crée une localisation dans l'adressage mémoire. */
+vmpa2_t *make_vmpa(off_t, uint64_t);
+
+
+
+#define load_vmpa_from_fd(vmpa, fd) true
+
+#define store_vmpa_to_fd(vmpa, fd) true
+
+
+
+
+#endif /* _ARCH_VMPA_H */
diff --git a/src/gtkext/gtkdockstation.c b/src/gtkext/gtkdockstation.c
index c299542..a742c07 100644
--- a/src/gtkext/gtkdockstation.c
+++ b/src/gtkext/gtkdockstation.c
@@ -230,7 +230,7 @@ void gtk_dock_panel_add_widget(GtkDockStation *station, GtkWidget *widget, const
char *str; /* Titre des prochaines fois */
GtkWidget *label; /* Etiquette d'onglet */
- max = get_integer_config_value(get_main_configuration(), MPT_ELLIPSIS_TAB);
+ max = 3; // TODO : config dans un .so pour Python // get_integer_config_value(get_main_configuration(), MPT_ELLIPSIS_TAB);
str = ellipsis(strdup(caption), max);
label = qck_create_label(NULL, NULL, str);
@@ -249,7 +249,7 @@ void gtk_dock_panel_add_widget(GtkDockStation *station, GtkWidget *widget, const
str = g_object_get_data(G_OBJECT(widget), "title");
if (str != NULL) free(str);
- max = get_integer_config_value(get_main_configuration(), MPT_ELLIPSIS_HEADER);
+ max = 3; // TODO : config dans un .so pour Python // get_integer_config_value(get_main_configuration(), MPT_ELLIPSIS_HEADER);
g_object_set_data(G_OBJECT(widget), "title", ellipsis(strdup(caption), max));
gtk_dock_panel_update_title(station, widget, caption);