summaryrefslogtreecommitdiff
path: root/plugins/pyoida/pyoida.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2012-03-17 20:29:47 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2012-03-17 20:29:47 (GMT)
commitbbad297e902022ecac9fab21c01dc109560db8eb (patch)
tree6d9703e7dda8c0a61b0a3a015be89612df3bf198 /plugins/pyoida/pyoida.c
parentd1f5881c1f4ad53781fdadfe5ce6cac24cee3bab (diff)
Created the 'pychrysa' Python plugin from the 'pyoida' one.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@240 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'plugins/pyoida/pyoida.c')
-rw-r--r--plugins/pyoida/pyoida.c275
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