def _get_user_selected_functions(self, many=False): functions = [] ea = ida_shims.get_screen_ea() try: current_function = ida_shims.get_func_attr(ea, idc.FUNCATTR_START) except: current_function = None while True: function = ida_shims.choose_func( "Select a function and click 'OK' until all functions have " "been selected. When finished, click 'Cancel' to display the " "graph.") if ida_shims.get_screen_ea() != ea: ida_shims.jumpto(ea) if not function or \ function == idc.BADADDR or function == current_function: break elif function not in functions: functions.append(function) if not many: break return functions
def OnDblClick(self, node_id): xref_locations = [] node_ea = self.get_ea_by_name(self[node_id]) if self.edges.has_key(node_id): for edge_node_id in self.edges[node_id]: edge_node_name = self[edge_node_id] edge_node_ea = self.get_ea_by_name(edge_node_name) if edge_node_ea != idc.BADADDR: for xref in idautils.XrefsTo(edge_node_ea): # Is the specified node_id the source of this xref? if self.match_xref_source(xref, node_ea): xref_locations.append((xref.frm, edge_node_ea)) if xref_locations: xref_locations.sort() print "" print "Path Xrefs from %s:" % self[node_id] print "-" * 100 for (xref_ea, dst_ea) in xref_locations: print "%-50s => %s" % (self.get_name_by_ea(xref_ea), self.get_name_by_ea(dst_ea)) print "-" * 100 print "" ida_shims.jumpto(xref_locations[0][0]) else: ida_shims.jumpto(node_ea)
def OnSelectLine(self, n): ida_shims.jumpto(self.items[n][2])
def OnSelectLine(self, n): ida_shims.jumpto(ida_shims.get_name_ea_simple(self.items[n][0]))