diff options
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/pychrysalide/analysis/loaded.c | 55 | 
1 files changed, 55 insertions, 0 deletions
| diff --git a/plugins/pychrysalide/analysis/loaded.c b/plugins/pychrysalide/analysis/loaded.c index 0c94a88..9b280a2 100644 --- a/plugins/pychrysalide/analysis/loaded.c +++ b/plugins/pychrysalide/analysis/loaded.c @@ -26,6 +26,7 @@  #include <assert.h> +#include <malloc.h>  #include <pygobject.h> @@ -42,6 +43,9 @@ static PyObject *py_loaded_content_analyze(PyObject *, PyObject *);  /* Lance l'analyse de l'élément chargé et attend sa conclusion. */  static PyObject *py_loaded_content_analyze_and_wait(PyObject *, PyObject *); +/* Etablit une liste d'obscurcissements présents. */ +static PyObject *py_loaded_content_detect_obfuscators(PyObject *, PyObject *); +  /* Détermine le nombre de vues disponibles pour un contenu. */  static PyObject *py_loaded_content_count_views(PyObject *, PyObject *); @@ -106,6 +110,52 @@ static PyObject *py_loaded_content_analyze_and_wait(PyObject *self, PyObject *ar  /******************************************************************************  *                                                                             * +*  Paramètres  : self = contenu binaire à manipuler.                          * +*                args = non utilisé ici.                                      * +*                                                                             * +*  Description : Etablit une liste d'obscurcissements présents.               * +*                                                                             * +*  Retour      : Désignations humaines correspondantes.                       * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +static PyObject *py_loaded_content_detect_obfuscators(PyObject *self, PyObject *args) +{ +    PyObject *result;                       /* Bilan à retourner           */ +    int version;                            /* Avec la version si possible */ +    int ret;                                /* Bilan de lecture des args.  */ +    GLoadedContent *content;                /* Version GLib de l'élément   */ +    size_t count;                           /* Nombre de détections        */ +    char **detections;                      /* Liste d'obscurcissements    */ +    size_t i;                               /* Boucle de parcours          */ + +    ret = PyArg_ParseTuple(args, "p", &version); +    if (!ret) Py_RETURN_NONE; + +    content = G_LOADED_CONTENT(pygobject_get(self)); + +    detections = g_loaded_content_detect_obfuscators(content, version, &count); + +    result = PyTuple_New(count); + +    for (i = 0; i < count; i++) +    { +        PyTuple_SetItem(result, i, PyUnicode_FromString(detections[i])); +        free(detections[i]); +    } + +    if (detections != NULL) +        free(detections); + +    return result; + +} + + +/****************************************************************************** +*                                                                             *  *  Paramètres  : self = contenu chargé à manipuler.                           *  *                args = non utilisé ici.                                      *  *                                                                             * @@ -162,6 +212,11 @@ PyTypeObject *get_python_loaded_content_type(void)              "wait for its completion."          },          { +            "detect_obfuscators", py_loaded_content_detect_obfuscators, +            METH_VARARGS, +            "detect_obfuscators($self, version, /)\n--\n\nList all detected obfuscators." +        }, +        {              "count_views", py_loaded_content_count_views,              METH_NOARGS,              "count_views($self, /)\n--\n\nCompute the quantity of available views." | 
