/* Chrysalide - Outil d'analyse de fichiers binaires * area.h - prototypes pour la définition et la manipulation des aires à désassembler * * Copyright (C) 2014 Cyrille Bagard * * This file is part of Chrysalide. * * 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 . */ #ifndef _ANALYSIS_DISASS_AREA_H #define _ANALYSIS_DISASS_AREA_H #include "../binary.h" #include "../../arch/instruction.h" #include "../../gtkext/gtkstatusstack.h" /* Zone mémoire bien bornée */ typedef struct _mem_area_v2 mem_area_v2; /* Procède au désassemblage d'un contenu binaire exécutable. */ void load_code_from_mem_area_v2(mem_area_v2 *, mem_area_v2 *, size_t, GProcContext *, const vmpa2t *, bool, GtkStatusStack *, activity_id_t); /* Détermine une liste de zones contigües à traiter. */ mem_area_v2 *find_memory_area_by_addr_v2(mem_area_v2 *, size_t, const vmpa2t *); /* Détermine une liste de zones contigües à traiter. */ mem_area_v2 *compute_memory_areas_v2(const GLoadedBinary *, phys_t, size_t *); /* Insère un symbole dans un découpage en aires. */ void insert_extra_symbol_into_mem_areas_v2(mem_area_v2 *, size_t, const GBinSymbol *); /* S'assure que l'ensemble des aires est entièrement décodé. */ void ensure_all_mem_areas_are_filled(mem_area_v2 *, size_t, GProcContext *, GtkStatusStack *, activity_id_t); /* Rassemble les instructions conservées dans des zones données. */ GArchInstruction *collect_instructions_from_mem_areas_v2(const mem_area_v2 *, size_t); #include #include "../binary.h" #include "../../format/executable.h" #include "../../gtkext/gtkextstatusbar.h" ////// #include "../../arch/raw.h" #include "../../arch/instruction.h" /* Zone mémoire bien bornée */ typedef struct _mem_area mem_area; /* Procède au désassemblage d'un contenu binaire exécutable. */ bool load_code_from_mem_area(mem_area **, size_t *, size_t *, const GLoadedBinary *, GProcContext *, const vmpa2t *, status_blob_info *); /* S'assure qu'une aire qqcontient toutes ses instructions. */ void fill_mem_area(mem_area **, size_t *, size_t *, const GLoadedBinary *, GProcContext *, status_blob_info *); /* Détermine une liste de zones contigües à traiter. */ mem_area *compute_memory_areas(GExeFormat *, phys_t, size_t *); /* Détermine une liste de zones contigües à traiter. */ size_t find_memory_area_by_addr(mem_area *, size_t, const vmpa2t *); /* Rassemble les instructions conservées dans des zones données. */ GArchInstruction *collect_instructions_from_mem_areas(mem_area *, size_t); #endif /* _ANALYSIS_DISASS_AREA_H */