def find(s=None, x=False, asm_where=None): b, ret = FindInstructions(s, asm_where) if b: # executable segs only? if x: results = [] for ea in ret: seg = ida_segment.getseg(ea) if (not seg) or (seg.perm & ida_segment.SEGPERM_EXEC) == 0: continue results.append(SearchResult(ea)) else: results = [SearchResult(ea) for ea in ret] title = "Search result for: [%s]" % s ida_kernwin.close_chooser(title) c = SearchResultChoose(title, results) c.Show(True) else: print(ret)
def main(): if not ida_dbg.is_debugger_on(): ida_kernwin.warning("Please run the process first!") return if ida_dbg.get_process_state() != -1: ida_kernwin.warning("Please suspend the debugger first!") return # get all debug namesp dn = ida_name.get_debug_names(ida_ida.cvar.inf.min_ea, ida_ida.cvar.inf.max_ea) # initiate a nearest name search (using debug names) nn = ida_name.NearestName(dn) ret, callstack = CallStackWalk(nn) if ret: title = "Call stack walker (thread %X)" % (ida_dbg.get_current_thread()) ida_kernwin.close_chooser(title) c = CallStackWalkChoose(title, callstack) c.Show(True) else: ida_kernwin.warning("Failed to walk the stack:" + callstack)