diff options
Diffstat (limited to 'plugins/pyoida/pyoida.c')
-rw-r--r-- | plugins/pyoida/pyoida.c | 275 |
1 files changed, 0 insertions, 275 deletions
diff --git a/plugins/pyoida/pyoida.c b/plugins/pyoida/pyoida.c deleted file mode 100644 index f3051cc..0000000 --- a/plugins/pyoida/pyoida.c +++ /dev/null @@ -1,275 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * pyoida.c - plugin permettant des extensions en Python - * - * Copyright (C) 2009-2012 Cyrille Bagard - * - * This file is part of OpenIDA. - * - * OpenIDA is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * OpenIDA is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Foobar. If not, see <http://www.gnu.org/licenses/>. - */ - - -#include "pyoida.h" - - -#include <config.h> -#include <dirent.h> - - -#include <Python.h> -#include <pygobject.h> - - -#include "quirks.h" -#include "analysis/module.h" -#include "arch/module.h" -#include "debug/module.h" -#include "format/module.h" - -/* -#include "analysis/py_binary.h" -#include "analysis/py_line.h" -#include "analysis/py_line_code.h" -#include "analysis/roptions.h" -*/ -#include "plugin.h" -#include "py_log.h" -#include "../../src/common/environment.h" - - -#include "plugin.h" - - - -static GObject *_ref = NULL; - - - -static PyObject *pyoida_get_current_binary(PyObject *self, PyObject *args) -{ - GOpenidaBinary *binary; /* Structure à copier */ - - binary = (GOpenidaBinary *)g_object_get_data(_ref, "current_binary"); - - return pybinary_new_from_existing(binary); - -} - -static PyMethodDef SpamMethods[] = { - {"current_binary", pyoida_get_current_binary, METH_NOARGS, - "Give the current analyzed binary."}, - {NULL, NULL, 0, NULL} /* Sentinel */ -}; - - - - -static PyObject *__mod; - - -/****************************************************************************** -* * -* Paramètres : ref = espace de référencement global. * -* * -* Description : Initialise le greffon permettant l'usage de Python. * -* * -* Retour : true. * -* * -* Remarques : - * -* * -******************************************************************************/ - -bool init_plugin(GObject *ref) -{ - char *paths; /* Emplacements de greffons */ - char *path; /* Chemin à fouiller */ - char *save; /* Sauvegarde pour ré-entrance */ - DIR *dir; /* Répertoire à parcourir */ - struct dirent entry; /* Elément trouvé */ - struct dirent *next; /* Prochain élément fourni */ - int ret; /* Bilan d'un appel système */ - char *filename; /* Chemin d'accès reconstruit */ - - - - - GPluginModule *plugin; - - - - printf("Init pyoida\n"); - - _ref = ref; - - - /* Définition des zones d'influence */ - - add_to_env_var("PYTHONPATH", PLUGINS_DIR G_DIR_SEPARATOR_S "python", ";"); - - paths = get_env_var("PYTHONPATH"); - - /* Intialisations Python */ - - - //return false; - - - Py_Initialize(); - - initpyoida(); - - - - /* Chargement des greffons */ - - printf("Paths :: '%s'\n", paths); - - for (path = strtok_r(paths, ";", &save); - path != NULL; - path = strtok_r(NULL, ";", &save)) - { - dir = opendir(path); - if (dir == NULL) - { - perror("opendir"); - continue; - } - - printf("CHEMIN :: '%s'\n", path); - - for (ret = readdir_r(dir, &entry, &next); - ret == 0 && next != NULL; - ret = readdir_r(dir, &entry, &next)) - { - if (entry.d_name[0] == '.') continue; - - filename = strdup(entry.d_name); - filename = stradd(filename, "."); - filename = stradd(filename, "__init__"); - - printf(" - entry :: '%s'\n", filename); - - - plugin = g_python_plugin_new(entry.d_name, filename); - - if (plugin == NULL) - printf("No suitable Python plugin found in '%s'\n", filename); /* FIXME : LOG(...) */ - else - { - printf("ok pour %s\n", filename); - add_plugin_to_main_list(plugin); - } - - free(filename); - - } - - closedir(dir); - - break; /* FIXME */ - - } - - //Py_Finalize(); - - return true; - -} - - -/****************************************************************************** -* * -* Paramètres : plugin = greffon à consulter. * -* * -* Description : Indique les opérations offertes par un greffon donné. * -* * -* Retour : Action(s) offerte(s) par le greffon. * -* * -* Remarques : - * -* * -******************************************************************************/ - -PluginAction get_plugin_action(const GPluginModule *plugin) -{ - PluginAction result; /* Combinaison à retourner */ - - result = PGA_NONE; - - - - - return result; - -} - - - - - -#if PY_VERSION_HEX >= 0x03000000 - -/* Python 3.x code */ - -static struct PyModuleDef spammodule = { - PyModuleDef_HEAD_INIT, - "pyoida", /* name of module */ - "pyoida_doc", /* module documentation, may be NULL */ - -1, /* size of per-interpreter state of the module, - or -1 if the module keeps state in global variables. */ - SpamMethods -}; - -PyMODINIT_FUNC -PyInit_pyoida(void) -{ - printf("Passage 3\n"); - (void) PyModule_Create(&spammodule); -} - -#else - -/* Python 2.x code */ - -typedef struct { - PyObject_HEAD - PyObject *md_dict; -} PyModuleObject; - - -PyMODINIT_FUNC -initpyoida(void) -{ - PyObject *module; - - pygobject_init(-1, -1, -1); - pychrysalide_init_quirks(); - - printf("Passage 2\n"); - module = Py_InitModule("pyoida", SpamMethods); - - __mod = module; - - //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_log_to_python_module(module); - add_plugin_to_python_module(module); - -} - -#endif |