diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2019-11-24 22:26:04 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2019-11-24 22:26:04 (GMT) |
commit | 643ad3b7981e4da54c1748e72b525a1f477ea155 (patch) | |
tree | f813720a07a420748f90d6daf3b66aa525e2642a | |
parent | cef46f9f06a7448db60116e8c0ccadee44d83692 (diff) |
Defined special values of memory locations for Python.
-rw-r--r-- | plugins/pychrysalide/analysis/db/constants.c | 11 | ||||
-rw-r--r-- | plugins/pychrysalide/arch/Makefile.am | 1 | ||||
-rw-r--r-- | plugins/pychrysalide/arch/constants.c | 70 | ||||
-rw-r--r-- | plugins/pychrysalide/arch/constants.h | 38 | ||||
-rw-r--r-- | plugins/pychrysalide/arch/vmpa.c | 4 |
5 files changed, 120 insertions, 4 deletions
diff --git a/plugins/pychrysalide/analysis/db/constants.c b/plugins/pychrysalide/analysis/db/constants.c index 07c7a06..76385fd 100644 --- a/plugins/pychrysalide/analysis/db/constants.c +++ b/plugins/pychrysalide/analysis/db/constants.c @@ -1,6 +1,6 @@ /* Chrysalide - Outil d'analyse de fichiers binaires - * constants.c - équivalent Python partiel du fichier "plugins/dex/dex_def.h" + * constants.c - ajout des constantes liées aux bases de données * * Copyright (C) 2018 Cyrille Bagard * @@ -63,7 +63,8 @@ bool define_db_protocol_constants(PyTypeObject *type) goto exit; } - result = attach_constants_group(type, false, "DBFeatures", values, "Features provided by database items."); + result = attach_constants_group(type, false, "DBFeatures", values, + "Features provided by database items."); exit: @@ -104,7 +105,8 @@ bool define_db_item_constants(PyTypeObject *type) goto exit; } - result = attach_constants_group(type, true, "DbItemFlags", values, "Properties of a database item."); + result = attach_constants_group(type, true, "DbItemFlags", values, + "Properties of a database item."); exit: @@ -142,7 +144,8 @@ bool define_hub_server_constants(PyTypeObject *type) goto exit; } - result = attach_constants_group(type, false, "ServerStartStatus", values, "Status of a server start."); + result = attach_constants_group(type, false, "ServerStartStatus", values, + "Status of a server start."); exit: diff --git a/plugins/pychrysalide/arch/Makefile.am b/plugins/pychrysalide/arch/Makefile.am index b26727d..8b0e992 100644 --- a/plugins/pychrysalide/arch/Makefile.am +++ b/plugins/pychrysalide/arch/Makefile.am @@ -2,6 +2,7 @@ noinst_LTLIBRARIES = libpychrysaarch.la libpychrysaarch_la_SOURCES = \ + constants.h constants.c \ context.h context.c \ feeder.h feeder.c \ immediate.h immediate.c \ diff --git a/plugins/pychrysalide/arch/constants.c b/plugins/pychrysalide/arch/constants.c new file mode 100644 index 0000000..341cb63 --- /dev/null +++ b/plugins/pychrysalide/arch/constants.c @@ -0,0 +1,70 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * constants.c - ajout des constantes de base pour les architectures + * + * Copyright (C) 2018 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 "constants.h" + + +#include <arch/vmpa.h> + + +#include "../helpers.h" + + + +/****************************************************************************** +* * +* Paramètres : type = type dont le dictionnaire est à compléter. * +* * +* Description : Définit les constantes relatives aux emplacements. * +* * +* Retour : true en cas de succès de l'opération, false sinon. * +* * +* Remarques : - * +* * +******************************************************************************/ + +bool define_arch_vmpa_constants(PyTypeObject *type) +{ + bool result; /* Bilan à retourner */ + PyObject *values; /* Groupe de valeurs à établir */ + + values = PyDict_New(); + + result = add_const_to_group(values, "NO_PHYSICAL", VMPA_NO_PHYSICAL); + if (result) result = add_const_to_group(values, "NO_VIRTUAL", VMPA_NO_VIRTUAL); + + if (!result) + { + Py_DECREF(values); + goto exit; + } + + result = attach_constants_group(type, false, "VmpaSpecialValue", values, + "Special values for memory locations."); + + exit: + + return result; + +} diff --git a/plugins/pychrysalide/arch/constants.h b/plugins/pychrysalide/arch/constants.h new file mode 100644 index 0000000..d1fc2d4 --- /dev/null +++ b/plugins/pychrysalide/arch/constants.h @@ -0,0 +1,38 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * constants.h - prototypes pour l'ajout des constantes de base pour les architectures + * + * Copyright (C) 2019 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_PYCHRYSALIDE_ARCH_CONSTANTS_H +#define _PLUGINS_PYCHRYSALIDE_ARCH_CONSTANTS_H + + +#include <Python.h> +#include <stdbool.h> + + +/* Définit les constantes relatives aux emplacements. */ +bool define_arch_vmpa_constants(PyTypeObject *); + + + +#endif /* _PLUGINS_PYCHRYSALIDE_ARCH_CONSTANTS_H */ diff --git a/plugins/pychrysalide/arch/vmpa.c b/plugins/pychrysalide/arch/vmpa.c index 015687f..aa745cf 100644 --- a/plugins/pychrysalide/arch/vmpa.c +++ b/plugins/pychrysalide/arch/vmpa.c @@ -32,6 +32,7 @@ #include <i18n.h> +#include "constants.h" #include "../access.h" #include "../helpers.h" @@ -681,6 +682,9 @@ bool ensure_python_vmpa_is_registered(void) if (!register_python_module_object(module, type)) return false; + if (!define_arch_vmpa_constants(type)) + return false; + } return true; |