diff options
Diffstat (limited to 'plugins/stackvars/operand.c')
-rw-r--r-- | plugins/stackvars/operand.c | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/plugins/stackvars/operand.c b/plugins/stackvars/operand.c deleted file mode 100644 index ecc3c4d..0000000 --- a/plugins/stackvars/operand.c +++ /dev/null @@ -1,168 +0,0 @@ - -/* Chrysalide - Outil d'analyse de fichiers binaires - * operand.c - opérandes de substitution pour variables - * - * Copyright (C) 2009-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 Chrysalide. If not, see <http://www.gnu.org/licenses/>. - */ - - -#include "operand.h" - - -#include <stdio.h> -#include <string.h> - - -#include <arch/operand-int.h> - - - -/* Définition d'un opérande de substitution pour variable de pile (instance) */ -struct _GStackVarOperand -{ - GArchOperand parent; /* Instance parente */ - - const GBinRoutine *routine; /* Routine d'appartenance */ - const GX86ModRMOperand *child; /* Opérand d'origine substitué */ - -}; - - -/* Définition d'un opérande de substitution pour variable de pile (classe) */ -struct _GStackVarOperandClass -{ - GArchOperandClass parent; /* Classe parente */ - -}; - - -/* Initialise la classe des opérandes de substitution. */ -static void g_stack_var_operand_class_init(GStackVarOperandClass *); - -/* Initialise l'instande d'un opérandes de substitution. */ -static void g_stack_var_operand_init(GStackVarOperand *); - - - -/* Indique le type défini pour un opérande de substitution pour variable de pile. */ -G_DEFINE_TYPE(GStackVarOperand, g_stack_var_operand, G_TYPE_ARCH_OPERAND); - - -/****************************************************************************** -* * -* Paramètres : klass = classe à initialiser. * -* * -* Description : Initialise la classe des opérandes de substitution. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_stack_var_operand_class_init(GStackVarOperandClass *klass) -{ - -} - - -/****************************************************************************** -* * -* Paramètres : operand = instance à initialiser. * -* * -* Description : Initialise l'instande d'un opérandes de substitution. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_stack_var_operand_init(GStackVarOperand *operand) -{ - -} - - -/****************************************************************************** -* * -* Paramètres : routine = routine d'appatenance de l'opérande. * -* child = opérande d'origine à substituer. * -* * -* Description : Crée un opérande de substitution pour variable de pile. * -* * -* Retour : Instruction mise en place. * -* * -* Remarques : - * -* * -******************************************************************************/ - -GArchOperand *g_stack_var_operand_new(const GBinRoutine *routine, const GX86ModRMOperand *child) -{ - GStackVarOperand *result; /* Opérande à retourner */ - - result = g_object_new(G_TYPE_STACK_VAR_OPERAND, NULL); - - result->routine = routine; - result->child = child; - - return G_ARCH_OPERAND(result); - -} - -#if 0 -/****************************************************************************** -* * -* Paramètres : operand = opérande à transcrire. * -* format = format du binaire manipulé. * -* buffer = zone de texte à venir compléter. * -* iter = point d'insertion du nouveau texte. * -* * -* Description : Ajoute à un texte GTK le contenu d'un opérande. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_stack_var_operand_add_to_gtk_buffer(const GStackVarOperand *operand, const GExeFormat *format, GtkTextBuffer *buffer, GtkTextIter *iter) -{ - const GImmOperand *displacement; /* Décalage supplémentaire */ - size_t value; /* Position dans la pile */ - bool negative; /* Direction dans la pile */ - size_t index; /* Indice de la variable */ - char name[32]; /* Nom de la variable */ - - displacement = g_x86_mod_rm_operand_get_displacement(operand->child); - g_imm_operand_to_size_t(displacement, &value, &negative); - - g_content_exporter_insert_with_gtk_tag(G_CONTENT_EXPORTER(operand), buffer, iter, - "[", 1, RTT_HOOK); - - index = g_binary_routine_get_var_index_from_offset(operand->routine, value, negative); - snprintf(name, 32, "%s%u", negative ? "local" : "arg", index); - - g_content_exporter_insert_with_gtk_tag(G_CONTENT_EXPORTER(operand), buffer, iter, - name, strlen(name), RTT_VAR_NAME); - - g_content_exporter_insert_with_gtk_tag(G_CONTENT_EXPORTER(operand), buffer, iter, - "]", 1, RTT_HOOK); - -} -#endif |