/* OpenIDA - Outil d'analyse de fichiers binaires * options.c - configuration du débogage ptrace() * * Copyright (C) 2008 Cyrille Bagard * * This file is part of OpenIDA. * * 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 . */ #include "options.h" #include #include #include #include /* ---------------------- OPTIONS POUR LE DEBOGAGE AVEC PTRACE ---------------------- */ /* Description des options */ struct _ptrace_options { char *filename; /* Fichier à exécuter */ char **argv; /* Argument à fournir */ }; /* ---------------------------------------------------------------------------------- */ /* OPTIONS POUR LE DEBOGAGE AVEC PTRACE */ /* ---------------------------------------------------------------------------------- */ /****************************************************************************** * * * Paramètres : binary = élément binaire ciblé par le débogage. * * * * Description : Etablit les options par défaut pour un binaire donné. * * * * Retour : Structure mise en place (ou NULL en cas d'échec). * * * * Remarques : - * * * ******************************************************************************/ ptrace_options *create_ptrace_options_from_binary(const openida_binary *binary) { ptrace_options *result; result = (ptrace_options *)calloc(1, sizeof(ptrace_options)); result->filename = strdup(openida_binary_get_filename(binary)); result->argv = (char **)calloc(2, sizeof(char *)); result->argv[0] = basename(result->filename); return result; } /****************************************************************************** * * * Paramètres : options = options du débogage à consulter. * * * * Description : Lance le processus à déboguer via ptrace(). * * * * Retour : false en cas d'échec. * * * * Remarques : - * * * ******************************************************************************/ bool run_ptrace_options_process(const ptrace_options *options) { execv(options->filename, options->argv); perror("execlp"); return false; }