All pastes #1227035 Raw Edit

kedbg

public text v1 · immutable
#1227035 ·published 2008-10-14 17:44 UTC
rendered paste body
#include "revm.h"
#include "libe2dbg.h"
#include "gdbwrapper.h"

#define  ERROR_CONNECTION  "problem when connecting... exiting\n"
#define  USAGE             "Usage: ./netgdb <server> <port> <file>\n"
#define  KEDBGNAME         "kedbg"
/* The commands are for internal debuging purpose. */
#define  COM1              "youpla"
#define  HELPCOM1          "Not much to say..."


/**************** Command definition and registration ****************/


/* Dummy function, for compatibility with e2dbg. */
int             cmd_linkmap(void)
{
  return 0;
}


/* Dummy function, for compatibility with e2dbg. */
int             e2dbg_linkmap_load(char *name)
{
  name = NULL;
  return 0;
}


/* Debugging purpose. */
void            cmd_com1(void)
{
  fprintf(stderr, "YOUPLA: %d\n", dbgworld.mode);
}


void            cmd_kedbgstart(void)
{
  fprintf(stderr, "Rasta root :)\n");
}


void            cmd_kedbgcont(void)
{
  fprintf(stderr, "Rasta root 2  :)\n");
}


void            kedbg_register_command(void)
{
  revm_command_add(COM1,          cmd_com1, revm_getvarparams, 0, HELPCOM1);
  /* These commands are overwritten. */
  revm_command_add(CMD_START,     cmd_kedbgstart, NULL, 1, HLP_START);
  revm_command_add(CMD_CONTINUE,  cmd_kedbgcont,  NULL, 1, HLP_CONTINUE);
  revm_command_add(CMD_CONTINUE2, cmd_kedbgcont,  NULL, 1, HLP_CONTINUE);
}


/**************** Vector stuff ****************/


/**************** Vector initialization ****************/

void           kedbg_register_vector(void)
{
/*   e2dbg_register_gregshook(ELFSH_ARCH_IA32, E2DBG_HOST_PROC,  */
/* 			   ELFSH_OS_FREEBSD, e2dbg_get_regvars_ia32_bsd); */

}
/**************** Main stuff ****************/

void		kedbg_create_prompt(char *buf, unsigned int size)
{
  snprintf(buf, size - 1,
	   "%s%s%s%s%s%s%s%s%s%s%s ",
	   revm_colorget("%s", "pspecial", "("),
	   revm_colorget("%s", "psname" , KEDBGNAME),
	   revm_colorget("%s", "pspecial", "-"),
	   revm_colorget("%s", "pversion", REVM_VERSION),
	   revm_colorget("%s", "pspecial", "-"),
	   revm_colorget("%s", "prelease", REVM_RELEASE),
	   revm_colorget("%s", "pspecial", "-"),
	   revm_colorget("%s", "pedition", REVM_EDITION),
	   revm_colorget("%s", "pspecial", "@"),
	   revm_colorget("%s", "psname", world.curjob->ws.name),
	   revm_colorget("%s", "pspecial", ")"));
  revm_endline();
}


int		kedbg_main(int argc, char **argv)
{
  int           ret;

  /* The "1" stands for interactive. */
  revm_setup(1, argv, REVM_STATE_CMDLINE, REVM_SIDE_CLIENT);
  revm_config(".kedbgrc");
  revm_set_prompt(kedbg_create_prompt);

  e2dbg_register_command();
  /* Overwrite of some commands. */
  kedbg_register_command();
  
/*   file = elfsh_map_obj(argv[3]); */
/*   ASSERT(file != NULL); */
/*   fprintf(stderr, "trouxtt: %p\n", file); */
/*   fflush(stderr); */


  ret = revm_file_load(argv[3], 0, NULL);
  ASSERT(!ret);
  elfsh_set_debug_mode();
  revm_run(argc, argv);
  fprintf(stderr, "Double mouche");
  fflush(stderr);
  return 0;
}


int		main(int argc, char **argv)
{
  int           ret;

  if (argc != 4)
    {
      printf(USAGE);
      return -1;
    }

  ret = gdbwrap_simpleconnect(argv[1], atoi(argv[2]));

  if (ret == -1)
    {
      fprintf(stderr, ERROR_CONNECTION);
      return -1;
    }

  kedbg_main(argc, argv);
  return 0;
}