diff options
Diffstat (limited to 'plugins/pychrysa')
-rw-r--r-- | plugins/pychrysa/analysis/Makefile.am | 3 | ||||
-rw-r--r-- | plugins/pychrysa/analysis/blocks/Makefile.am | 15 | ||||
-rw-r--r-- | plugins/pychrysa/analysis/blocks/flow.c | 276 | ||||
-rw-r--r-- | plugins/pychrysa/analysis/blocks/flow.h | 42 | ||||
-rw-r--r-- | plugins/pychrysa/analysis/blocks/module.c | 91 | ||||
-rw-r--r-- | plugins/pychrysa/analysis/blocks/module.h | 39 | ||||
-rw-r--r-- | plugins/pychrysa/analysis/blocks/virtual.c | 108 | ||||
-rw-r--r-- | plugins/pychrysa/analysis/blocks/virtual.h | 42 | ||||
-rw-r--r-- | plugins/pychrysa/analysis/module.c | 2 |
9 files changed, 1 insertions, 617 deletions
diff --git a/plugins/pychrysa/analysis/Makefile.am b/plugins/pychrysa/analysis/Makefile.am index 5b90c07..31d37f6 100644 --- a/plugins/pychrysa/analysis/Makefile.am +++ b/plugins/pychrysa/analysis/Makefile.am @@ -9,7 +9,6 @@ libpychrysaanalysis_la_SOURCES = \ routine.h routine.c libpychrysaanalysis_la_LIBADD = \ - blocks/libpychrysaanalysisblocks.la \ contents/libpychrysaanalysiscontents.la \ db/libpychrysaanalysisdb.la @@ -21,4 +20,4 @@ AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS) $(LIBPYTHON_CFLAGS) $(LIBPYGOBJE AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS) -SUBDIRS = blocks contents db +SUBDIRS = contents db diff --git a/plugins/pychrysa/analysis/blocks/Makefile.am b/plugins/pychrysa/analysis/blocks/Makefile.am deleted file mode 100644 index b18f78a..0000000 --- a/plugins/pychrysa/analysis/blocks/Makefile.am +++ /dev/null @@ -1,15 +0,0 @@ - -noinst_LTLIBRARIES = libpychrysaanalysisblocks.la - -libpychrysaanalysisblocks_la_SOURCES = \ - flow.h flow.c \ - module.h module.c \ - virtual.h virtual.c - -libpychrysaanalysisblocks_la_LDFLAGS = - - -AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS) $(LIBPYTHON_CFLAGS) $(LIBPYGOBJECT_CFLAGS) \ - -I../../../../src - -AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS) diff --git a/plugins/pychrysa/analysis/blocks/flow.c b/plugins/pychrysa/analysis/blocks/flow.c deleted file mode 100644 index d14ab8c..0000000 --- a/plugins/pychrysa/analysis/blocks/flow.c +++ /dev/null @@ -1,276 +0,0 @@ - -/* Chrysalide - Outil d'analyse de fichiers binaires - * flow.h - équivalent Python du fichier "analysis/blocks/flow.c" - * - * Copyright (C) 2013 Cyrille Bagard - * - * This file is part of Chrysalide. - * - * Chrysalide 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. - * - * Chrysalide 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 "flow.h" - - -#include <pygobject.h> - - -#include <analysis/blocks/flow.h> - - -#include "../block.h" -#include "../../helpers.h" - - - - - - -#if 0 - -/* Fournit les adresses limites d'un bloc d'exécution. */ -static PyObject *py_flow_block_get_boundary_addresses(PyObject *, void *); - -/* Fournit le rang du bloc dans le flot d'exécution. */ -static PyObject *py_flow_block_get_rank(PyObject *, void *); - - - - - - - -/****************************************************************************** -* * -* Paramètres : self = classe représentant une instruction. * -* closure = adresse non utilisée ici. * -* * -* Description : Fournit les adresses limites d'un bloc d'exécution. * -* * -* Retour : Valeur associée à la propriété consultée. * -* * -* Remarques : - * -* * -******************************************************************************/ - -static PyObject *py_flow_block_get_boundary_addresses(PyObject *self, void *closure) -{ - PyObject *result; /* Trouvailles à retourner */ - GFlowBlock *block; /* Version native */ - vmpa_t start; /* Adresse de départ du bloc */ - vmpa_t end; /* Dernière adresse du bloc */ - - block = G_FLOW_BLOCK(pygobject_get(self)); - g_flow_block_get_boundary_addresses(block, &start, &end); - - result = Py_BuildValue("(KK)", start, end); - - return result; - -} - - -/****************************************************************************** -* * -* Paramètres : self = classe représentant une instruction. * -* closure = adresse non utilisée ici. * -* * -* Description : Fournit le rang du bloc dans le flot d'exécution. * -* * -* Retour : Valeur associée à la propriété consultée. * -* * -* Remarques : - * -* * -******************************************************************************/ - -static PyObject *py_flow_block_get_rank(PyObject *self, void *closure) -{ - PyObject *result; /* Trouvailles à retourner */ - GFlowBlock *block; /* Version native */ - - block = G_FLOW_BLOCK(pygobject_get(self)); - - result = Py_BuildValue("I", g_flow_block_get_rank(block)); - - return result; - -} - - - - - - - - - -/****************************************************************************** -* * -* Paramètres : module = module dont la définition est à compléter. * -* * -* Description : Prend en charge l'objet 'pychrysalide....blocks.FlowBlock'. * -* * -* Retour : Bilan de l'opération. * -* * -* Remarques : - * -* * -******************************************************************************/ - -bool register_python_flow_block(PyObject *module) -{ - PyObject *parent_mod; /* Module de la classe parente */ - int ret; /* Bilan d'un appel */ - - static PyMethodDef py_flow_block_methods[] = { - { NULL } - }; - - static PyGetSetDef py_flow_block_getseters[] = { - { - "boundary_addresses", (getter)py_flow_block_get_boundary_addresses, (setter)NULL, - "Provide the boundary addresses of the current flow block.", NULL - }, - { - "rank", (getter)py_flow_block_get_rank, (setter)NULL, - "Provide the rank of the current block in the execution flow.", NULL - }, - { NULL } - }; - - static PyTypeObject py_flow_block_type = { - - PyObject_HEAD_INIT(NULL) - - .tp_name = "pychrysalide.analysis.blocks.FlowBlock", - .tp_basicsize = sizeof(PyGObject), - - .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, - - .tp_doc = "PyChrysalide basic flow block", - - .tp_methods = py_flow_block_methods, - .tp_getset = py_flow_block_getseters - - }; - - parent_mod = PyImport_ImportModule("pychrysalide.analysis"); - if (parent_mod == NULL) return false; - - py_flow_block_type.tp_base = (PyTypeObject *)PyObject_GetAttrString(parent_mod, "InstrBlock"); - Py_DECREF(parent_mod); - - if (PyType_Ready(&py_flow_block_type) < 0) - return false; - - Py_INCREF(&py_flow_block_type); - ret = PyModule_AddObject(module, "FlowBlock", (PyObject *)&py_flow_block_type); - - register_class_for_pygobject(module, "GFlowBlock", G_TYPE_FLOW_BLOCK, &py_flow_block_type, - Py_BuildValue("(O)", py_flow_block_type.tp_base)); - - return (ret == 0); - -} - -#endif - - - - - - - - - - - - - - - - - - - -/****************************************************************************** -* * -* Paramètres : - * -* * -* Description : Fournit un accès à une définition de type à diffuser. * -* * -* Retour : Définition d'objet pour Python. * -* * -* Remarques : - * -* * -******************************************************************************/ - -PyTypeObject *get_python_flow_block_type(void) -{ - static PyMethodDef py_flow_block_methods[] = { - { NULL } - }; - - static PyGetSetDef py_flow_block_getseters[] = { - { NULL } - }; - - static PyTypeObject py_flow_block_type = { - - PyVarObject_HEAD_INIT(NULL, 0) - - .tp_name = "pychrysalide.analysis.blocks.FlowBlock", - - .tp_flags = Py_TPFLAGS_DEFAULT, - - .tp_doc = "PyChrysalide flow block", - - .tp_methods = py_flow_block_methods, - .tp_getset = py_flow_block_getseters, - - }; - - return &py_flow_block_type; - -} - - -/****************************************************************************** -* * -* Paramètres : module = module dont la définition est à compléter. * -* * -* Description : Prend en charge l'objet 'pychrysalide...blocks.FlowBlock'. * -* * -* Retour : Bilan de l'opération. * -* * -* Remarques : - * -* * -******************************************************************************/ - -bool register_python_flow_block(PyObject *module) -{ - PyTypeObject *py_flow_block_type; /* Type Python 'FlowBlock' */ - PyObject *dict; /* Dictionnaire du module */ - - py_flow_block_type = get_python_flow_block_type(); - - dict = PyModule_GetDict(module); - - if (!register_class_for_pygobject(dict, G_TYPE_FLOW_BLOCK, py_flow_block_type, get_python_instr_block_type())) - return false; - - return true; - -} diff --git a/plugins/pychrysa/analysis/blocks/flow.h b/plugins/pychrysa/analysis/blocks/flow.h deleted file mode 100644 index 8ffae1a..0000000 --- a/plugins/pychrysa/analysis/blocks/flow.h +++ /dev/null @@ -1,42 +0,0 @@ - -/* Chrysalide - Outil d'analyse de fichiers binaires - * flow.h - prototypes pour l'équivalent Python du fichier "analysis/blocks/flow.h" - * - * Copyright (C) 2013 Cyrille Bagard - * - * This file is part of Chrysalide. - * - * Chrysalide 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. - * - * Chrysalide 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_PYCHRYSA_ANALYSIS_BLOCKS_FLOW_H -#define _PLUGINS_PYCHRYSA_ANALYSIS_BLOCKS_FLOW_H - - -#include <Python.h> -#include <stdbool.h> - - - -/* Fournit un accès à une définition de type à diffuser. */ -PyTypeObject *get_python_flow_block_type(void); - -/* Prend en charge l'objet 'pychrysalide.analysis.blocks.FlowBlock'. */ -bool register_python_flow_block(PyObject *); - - - -#endif /* _PLUGINS_PYCHRYSA_ANALYSIS_BLOCKS_FLOW_H */ diff --git a/plugins/pychrysa/analysis/blocks/module.c b/plugins/pychrysa/analysis/blocks/module.c deleted file mode 100644 index 857d69f..0000000 --- a/plugins/pychrysa/analysis/blocks/module.c +++ /dev/null @@ -1,91 +0,0 @@ - -/* Chrysalide - Outil d'analyse de fichiers binaires - * module.c - intégration du répertoire blocks en tant que module - * - * Copyright (C) 2013 Cyrille Bagard - * - * This file is part of Chrysalide. - * - * Chrysalide 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. - * - * Chrysalide 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 "module.h" - - -#include <assert.h> - - -#include "flow.h" -#include "virtual.h" - - - -/****************************************************************************** -* * -* Paramètres : module = module dont la définition est à compléter. * -* * -* Description : Ajoute le module 'blocks' au module Python. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -bool add_analysis_blocks_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_blocks_module = { - - .m_base = PyModuleDef_HEAD_INIT, - - .m_name = "pychrysalide.analysis.blocks", - .m_doc = "Python module for Chrysalide.analysis.blocks", - - .m_size = -1, - - }; - - result = false; - - module = PyModule_Create(&py_chrysalide_blocks_module); - if (module == NULL) return false; - - ret = PyState_AddModule(super, &py_chrysalide_blocks_module); - if (ret != 0) goto loading_failed; - - ret = _PyImport_FixupBuiltin(module, "pychrysalide.analysis.blocks"); - if (ret != 0) goto loading_failed; - - Py_INCREF(module); - ret = PyModule_AddObject(super, "blocks", module); - if (ret != 0) goto loading_failed; - - result = true; - - result &= register_python_flow_block(module); - result &= register_python_virtual_block(module); - - loading_failed: - - assert(result); - - return result; - -} diff --git a/plugins/pychrysa/analysis/blocks/module.h b/plugins/pychrysa/analysis/blocks/module.h deleted file mode 100644 index 68959bd..0000000 --- a/plugins/pychrysa/analysis/blocks/module.h +++ /dev/null @@ -1,39 +0,0 @@ - -/* Chrysalide - Outil d'analyse de fichiers binaires - * module.h - prototypes pour l'intégration du répertoire blocks en tant que module - * - * Copyright (C) 2013 Cyrille Bagard - * - * This file is part of Chrysalide. - * - * Chrysalide 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. - * - * Chrysalide 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_PYOIDA_ANALYSIS_BLOCKS_MODULE_H -#define _PLUGINS_PYOIDA_ANALYSIS_BLOCKS_MODULE_H - - -#include <Python.h> -#include <stdbool.h> - - - -/* Ajoute le module 'blocks' au module Python. */ -bool add_analysis_blocks_module_to_python_module(PyObject *); - - - -#endif /* _PLUGINS_PYOIDA_ANALYSIS_BLOCKS_MODULE_H */ diff --git a/plugins/pychrysa/analysis/blocks/virtual.c b/plugins/pychrysa/analysis/blocks/virtual.c deleted file mode 100644 index 4879f62..0000000 --- a/plugins/pychrysa/analysis/blocks/virtual.c +++ /dev/null @@ -1,108 +0,0 @@ - -/* Chrysalide - Outil d'analyse de fichiers binaires - * virtual.h - équivalent Python du fichier "analysis/blocks/virtual.c" - * - * Copyright (C) 2013 Cyrille Bagard - * - * This file is part of Chrysalide. - * - * Chrysalide 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. - * - * Chrysalide 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 "virtual.h" - - -#include <pygobject.h> - - -#include <analysis/blocks/virtual.h> - - -#include "../block.h" -#include "../../helpers.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_virtual_block_type(void) -{ - static PyMethodDef py_virtual_block_methods[] = { - { NULL } - }; - - static PyGetSetDef py_virtual_block_getseters[] = { - { NULL } - }; - - static PyTypeObject py_virtual_block_type = { - - PyVarObject_HEAD_INIT(NULL, 0) - - .tp_name = "pychrysalide.analysis.blocks.VirtualBlock", - - .tp_flags = Py_TPFLAGS_DEFAULT, - - .tp_doc = "PyChrysalide virtual block", - - .tp_methods = py_virtual_block_methods, - .tp_getset = py_virtual_block_getseters, - - }; - - return &py_virtual_block_type; - -} - - -/****************************************************************************** -* * -* Paramètres : module = module dont la définition est à compléter. * -* * -* Description : Prend en charge l'objet 'pychrysalide...blocks.VirtualBlock'.* -* * -* Retour : Bilan de l'opération. * -* * -* Remarques : - * -* * -******************************************************************************/ - -bool register_python_virtual_block(PyObject *module) -{ - PyTypeObject *py_virtual_block_type; /* Type Python 'VirtualBlock' */ - PyObject *dict; /* Dictionnaire du module */ - - py_virtual_block_type = get_python_virtual_block_type(); - - dict = PyModule_GetDict(module); - - if (!register_class_for_pygobject(dict, G_TYPE_VIRTUAL_BLOCK, - py_virtual_block_type, get_python_instr_block_type())) - return false; - - return true; - -} diff --git a/plugins/pychrysa/analysis/blocks/virtual.h b/plugins/pychrysa/analysis/blocks/virtual.h deleted file mode 100644 index a5e8063..0000000 --- a/plugins/pychrysa/analysis/blocks/virtual.h +++ /dev/null @@ -1,42 +0,0 @@ - -/* Chrysalide - Outil d'analyse de fichiers binaires - * virtual.h - prototypes pour l'équivalent Python du fichier "analysis/blocks/virtual.h" - * - * Copyright (C) 2013 Cyrille Bagard - * - * This file is part of Chrysalide. - * - * Chrysalide 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. - * - * Chrysalide 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_PYCHRYSA_ANALYSIS_BLOCKS_VIRTUAL_H -#define _PLUGINS_PYCHRYSA_ANALYSIS_BLOCKS_VIRTUAL_H - - -#include <Python.h> -#include <stdbool.h> - - - -/* Fournit un accès à une définition de type à diffuser. */ -PyTypeObject *get_python_virtual_block_type(void); - -/* Prend en charge l'objet 'pychrysalide.analysis.blocks.VirtualBlock'. */ -bool register_python_virtual_block(PyObject *); - - - -#endif /* _PLUGINS_PYCHRYSA_ANALYSIS_BLOCKS_VIRTUAL_H */ diff --git a/plugins/pychrysa/analysis/module.c b/plugins/pychrysa/analysis/module.c index 1e1ab90..cfcd206 100644 --- a/plugins/pychrysa/analysis/module.c +++ b/plugins/pychrysa/analysis/module.c @@ -32,7 +32,6 @@ #include "block.h" #include "content.h" #include "routine.h" -#include "blocks/module.h" #include "contents/module.h" #include "db/module.h" @@ -89,7 +88,6 @@ bool add_analysis_module_to_python_module(PyObject *super) //result &= register_python_binary_content(module); result &= register_python_binary_routine(module); - result &= add_analysis_blocks_module_to_python_module(module); result &= add_analysis_contents_module_to_python_module(module); result &= add_analysis_db_module_to_python_module(module); |