void dump_new_frame(struct user_regs_struct *regs, struct user_regs_struct *old_regs, void *stack_frame, WINDOW **wins) { wclear(wins[WIN_REGS]); dump_regs_name(wins[WIN_REGS]); if (old_regs) dump_regs(old_regs, regs, wins, 1); werase(wins[WIN_STACK]); addr_prefix(regs->rbp, 0, regs->rbp - regs->rsp + 8, wins[WIN_STACK]); /* dump_data((char *)stack_frame, (char *)((long)stack_frame + regs->rbp - regs->rsp + 8), wins[WIN_STACK], 0, 0); */ update_var(wins[WIN_STACK], stack_frame, 0, regs->rbp - regs->rsp + 8, NULL, 1); touchwin(wins[WIN_STACK]); prefresh(wins[WIN_STACK], 0, 0, WIN_BORDER_LEN, WIN_BORDER_LEN, WIN_STACK_LI, WIN_STACK_CO); }
bool ZmqServer::addTCPSocket(std::string address, std::string port) { try { std::string addr_prefix("tcp://"); rep_socket.reset(new zmq::socket_t(context, ZMQ_REP)); rep_socket->setsockopt(ZMQ_RCVTIMEO, &DEFAULT_RPC_RECV_TIMEOUT_MS, sizeof(DEFAULT_RPC_RECV_TIMEOUT_MS)); if (address.empty()) address = "*"; if (port.empty()) port = "*"; std::string bind_address = addr_prefix + address + std::string(":") + port; rep_socket->bind(bind_address.c_str()); } catch (const std::exception& e) { MERROR(std::string("Error creating ZMQ Socket: ") + e.what()); return false; } return true; }
int dump_new_vars(struct user_regs_struct *regs, struct user_regs_struct *old_regs, void *stack_frame, WINDOW *win, unsigned *hl) { size_t idx; size_t var_len; size_t c_co; char disa; if (old_regs->rsp > regs->rsp) { idx = regs->rbp - old_regs->rsp + 8; var_len = old_regs->rsp - regs->rsp; addr_prefix(regs->rbp, idx, var_len + idx, win); if ((var_len + idx) / 16 < WIN_OSTACK_LI) update_var(win, (char *)stack_frame + idx, idx, var_len, hl, COLOR_PAIR(2)); prefresh(win, 0, 0, WIN_BORDER_LEN, WIN_BORDER_LEN, WIN_STACK_LI, WIN_STACK_CO); } else { disa = (regs->rbp % 16 ? 1 : 0) ^ (regs->rbp - regs->rsp % 16 ? 1 : 0); idx = regs->rbp - regs->rsp + 8; c_co = idx % 16; c_co += c_co + c_co / 2 + c_co / 8; wmove(win, idx / 16, c_co + (disa ? ADDR_PLEN : 0)); if (disa) wmove(win, idx / 16, 45 + idx % 16 + ADDR_PLEN); wclrtobot(win); prefresh(win, 0, 0, WIN_BORDER_LEN, WIN_BORDER_LEN, WIN_STACK_LI, WIN_STACK_CO); } return (0); }