IDA sdk 调试器接口

来源:互联网 发布:注册会计师课件知乎 编辑:程序博客网 时间:2024/05/16 04:41

struct debugger_t
{
  int version; //调试器插件版本号
  const char *name; //调试器名
  int id; //调试器类型id
  char* processor; //调试器cpu名
  uint32 flags; //
  const char** register_class;//寄存器
  int register_classes_default;
  register_info_t *_registers;//寄存器类
  int registers_size; //寄存器个数
  int memory_page_size; //
  const uchar* bpt_bytes; //断点指令字节
  uchar bpt_size; //大小
  uchar filetype;
  ushort resume_modes;
  bool (idaapi *init_debugger)(const char *hostname, int portnum, const char *password);//初始化
  bool (idaapi *term_debugger)(void);//结束
  int (idaapi *process_get_info)(int n, process_info_t *info);//获取进程名
  int (idaapi *start_process)(const char *path, const char *args, const char *startdir, int dbg_proc_flags, const char *input_path, uint32 input_file_crc32);
  //启动进程
  int (idaapi *attach_process)(pid_t pid, int event_id);//附加进程
  int (idaapi *detach_process)(void);//分离进程
  void (idaapi *rebase_if_required_to)(ea_t new_base);//基址重置
  int (idaapi *prepare_to_pause_process)(void);
  int (idaapi *exit_process)(void);//退出进程
  gdecode_t (idaapi *get_debug_event)(debug_event_t *event, int timeout_ms);//获取事件
  int (idaapi *continue_after_event)(const debug_event_t *event);//
  void (idaapi *set_exception_info)(const exception_info_t *info, int qty);
  void (idaapi *stopped_at_debug_event)(bool dlls_added);
  int (idaapi *thread_suspend) (thid_t tid); 
  int (idaapi *thread_continue)(thid_t tid);
  int (idaapi *set_resume_mode)(thid_t tid, resume_mode_t resmod);
  int (idaapi *read_registers)(thid_t tid, int clsmask, regval_t *values);
  int (idaapi *write_register)(thid_t tid, int regidx, const regval_t *value);
  int (idaapi *thread_get_sreg_base)(thid_t tid, int sreg_value, ea_t *answer);
  int (idaapi *get_memory_info)(meminfo_vec_t &areas);
  ssize_t (idaapi *read_memory)(ea_t ea, void *buffer, size_t size);
  ssize_t (idaapi *write_memory)(ea_t ea, const void *buffer, size_t size);
  int (idaapi *is_ok_bpt)(bpttype_t type, ea_t ea, int len);
  int (idaapi *update_bpts)(update_bpt_info_t *bpts, int nadd, int ndel);int (idaapi *update_bpts)(update_bpt_info_t *bpts, int nadd, int ndel);//更新断点
  int (idaapi *update_lowcnds)(const lowcnd_t *lowcnds, int nlowcnds);
  void (idaapi *close_file)(int fn);
  ssize_t (idaapi *read_file)(int fn, uint32 off, void *buf, size_t size);
  ea_t (idaapi *map_address)(ea_t off, const regval_t *regs, int regnum);
  const char *(idaapi *set_dbg_options)(const char *keyword, int pri, int value_type, const void *value);
  const void *(idaapi *get_debmod_extensions)(void);
  bool (idaapi *update_call_stack)(thid_t tid, call_stack_t *trace);
  ea_t (idaapi *appcall)(ea_t func_ea, thid_t tid, const struct func_type_data_t *fti, int nargs, const struct regobjs_t *regargs, struct relobj_t *stkargs, struct regobjs_t *retregs, qstring *errbuf, debug_event_t *event, int options);
  int (idaapi *cleanup_appcall)(thid_t tid);
  int (idaapi *eval_lowcnd)(thid_t tid, ea_t ea);
  ssize_t (idaapi *write_file)(int fn, uint32 off, const void *buf, size_t size);
  int (idaapi *send_ioctl)(int fn, const void *buf, size_t size, void **poutbuf, ssize_t *poutsize);
  bool (idaapi *dbg_enable_trace)(thid_t tid, bool enable, int trace_flags);
  bool (idaapi *is_tracing_enabled)(thid_t tid, int tracebit);
  int (idaapi *rexec)(const char *cmdline);
  void (idaapi *get_debapp_attrs)(debapp_attrs_t *out_pattrs);
}


0 0