From 643ad3b7981e4da54c1748e72b525a1f477ea155 Mon Sep 17 00:00:00 2001 From: Cyrille Bagard Date: Sun, 24 Nov 2019 23:26:04 +0100 Subject: Defined special values of memory locations for Python. --- plugins/pychrysalide/analysis/db/constants.c | 11 +++-- plugins/pychrysalide/arch/Makefile.am | 1 + plugins/pychrysalide/arch/constants.c | 70 ++++++++++++++++++++++++++++ plugins/pychrysalide/arch/constants.h | 38 +++++++++++++++ plugins/pychrysalide/arch/vmpa.c | 4 ++ 5 files changed, 120 insertions(+), 4 deletions(-) create mode 100644 plugins/pychrysalide/arch/constants.c create mode 100644 plugins/pychrysalide/arch/constants.h 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 + + +#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 +#include + + +/* 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 +#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; -- cgit v0.11.2-87-g4458