Python idaapi.attach_action_to_popup() Examples
The following are 18 code examples for showing how to use idaapi.attach_action_to_popup(). These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example.
You may check out the related API usage on the sidebar.
You may also want to check out all available functions/classes of the module
idaapi
, or try the search function
.
Example 1
Project: lighthouse Author: gaasedelen File: ida_integration.py License: MIT License | 6 votes |
def _inject_ctx_actions(self, view, popup, view_type): """ Inject context menu entries into IDA's right click menus. NOTE: This is only being used for coverage xref at this time, but may host additional actions in the future. """ if view_type == idaapi.BWN_DISASMS: idaapi.attach_action_to_popup( view, popup, self.ACTION_COVERAGE_XREF, # The action ID (see above) "Xrefs graph from...", # Relative path of where to add the action idaapi.SETMENU_APP # We want to append the action after ^ )
Example 2
Project: LazyIDA Author: L4ys File: LazyIDA.py License: MIT License | 6 votes |
def callback(self, event, *args): if event == idaapi.hxe_populating_popup: form, phandle, vu = args if vu.item.citype == idaapi.VDI_FUNC or (vu.item.citype == idaapi.VDI_EXPR and vu.item.e.is_expr() and vu.item.e.type.is_funcptr()): idaapi.attach_action_to_popup(form, phandle, ACTION_HX_REMOVERETTYPE, None) elif event == idaapi.hxe_double_click: vu, shift_state = args # auto jump to target if clicked item is xxx->func(); if vu.item.citype == idaapi.VDI_EXPR and vu.item.e.is_expr(): expr = idaapi.tag_remove(vu.item.e.print1(None)) if "->" in expr: # find target function name = expr.split("->")[-1] addr = idc.get_name_ea_simple(name) if addr == idaapi.BADADDR: # try class::function e = vu.item.e while e.x: e = e.x addr = idc.get_name_ea_simple("%s::%s" % (str(e.type).split()[0], name)) if addr != idaapi.BADADDR: idc.jumpto(addr) return 1 return 0
Example 3
Project: deREferencing Author: danigargu File: actions.py License: GNU General Public License v3.0 | 6 votes |
def register_menu_actions(form): widget = form.GetWidget() for action in form.menu_actions: act_name = action.name if act_name != '-': act_name = "%s:%s" % (PLUGIN_NAME, action.name) idaapi.register_action( idaapi.action_desc_t( act_name, action.title, ActionHandler(form, action), action.shortcut, action.tooltip, action.icon ) ) if action.checkable is not None: idaapi.update_action_checkable(act_name, True) idaapi.update_action_checked(act_name, action.checkable) idaapi.attach_action_to_popup(widget, None, act_name) # -----------------------------------------------------------------------
Example 4
Project: vt-ida-plugin Author: VirusTotal File: plugin_loader.py License: Apache License 2.0 | 5 votes |
def finish_populating_widget_popup(form, popup): if idaapi.get_widget_type(form) == idaapi.BWN_DISASM: idaapi.attach_action_to_popup( form, popup, VTGrepBytes.get_name(), 'VirusTotal/' ) idaapi.attach_action_to_popup( form, popup, VTGrepWildcards.get_name(), 'VirusTotal/', ) idaapi.attach_action_to_popup( form, popup, VTGrepWildCardsStrict.get_name(), 'VirusTotal/', ) idaapi.attach_action_to_popup( form, popup, VTGrepWildCardsFunction.get_name(), 'VirusTotal/', ) elif idaapi.get_widget_type(form) == idaapi.BWN_STRINGS: idaapi.attach_action_to_popup( form, popup, VTGrepStrings.get_name(), 'VirusTotal/')
Example 5
Project: IDAngr Author: andreafioraldi File: main_gui.py License: BSD 2-Clause "Simplified" License | 5 votes |
def finish_populating_tform_popup(form, popup): idaapi.attach_action_to_popup(form, popup, "Find", "IDAngr/") idaapi.attach_action_to_popup(form, popup, "Avoid", "IDAngr/") idaapi.attach_action_to_popup(form, popup, "Symbolic", "IDAngr/")
Example 6
Project: GhIDA Author: Cisco-Talos File: ghida.py License: Apache License 2.0 | 5 votes |
def finish_populating_tform_popup(self, form, popup): # TODO - Attach to the functions view. # if idaapi.get_tform_type(form) == idaapi.BWN_FUNCS: # idaapi.attach_action_to_popup( # form, popup, "my:disasmsaction", None) # Attach to the disassembler view only if idaapi.get_tform_type(form) == idaapi.BWN_DISASMS: idaapi.attach_action_to_popup( form, popup, "my:disasmsaction", None) idaapi.attach_action_to_popup( form, popup, "my:disasmtracker", None) idaapi.attach_action_to_popup( form, popup, "my:invalidatecache", None)
Example 7
Project: Sark Author: tmr232 File: lca.py License: MIT License | 5 votes |
def _attach_to_popup(self, action_name): idaapi.attach_action_to_popup(self.GetTCustomControl(), None, action_name)
Example 8
Project: Sark Author: tmr232 File: lca.py License: MIT License | 5 votes |
def idaview_hooks(idaview_handler): class Hooks(idaapi.UI_Hooks): def finish_populating_widget_popup(self, form, popup): if idaapi.get_widget_type(form) == idaapi.BWN_DISASM: idaapi.attach_action_to_popup(form, popup, idaview_handler.get_name(), "") return Hooks
Example 9
Project: Sark Author: tmr232 File: xrefsgraph.py License: MIT License | 5 votes |
def finish_populating_widget_popup(self, form, popup): # Or here, after the popup is done being populated by its owner. if idaapi.get_widget_type(form) == idaapi.BWN_DISASM: idaapi.attach_action_to_popup(form, popup, ShowXrefsGraphFrom.get_name(), '') idaapi.attach_action_to_popup(form, popup, ShowXrefsGraphTo.get_name(), '')
Example 10
Project: Sark Author: tmr232 File: function_flow.py License: MIT License | 5 votes |
def finish_populating_widget_popup(self, form, popup): # Or here, after the popup is done being populated by its owner. if idaapi.get_widget_type(form) == idaapi.BWN_DISASM: idaapi.attach_action_to_popup(form, popup, MarkReachableNodesHandler.get_name(), "Mark/") idaapi.attach_action_to_popup(form, popup, MarkUnReachableNodesHandler.get_name(), "Mark/") idaapi.attach_action_to_popup(form, popup, MarkReachingNodesHandler.get_name(), "Mark/") idaapi.attach_action_to_popup(form, popup, MarkNotReachingNodesHandler.get_name(), "Mark/") idaapi.attach_action_to_popup(form, popup, MarkExits.get_name(), "Mark/") idaapi.attach_action_to_popup(form, popup, MarkClearHandler.get_name(), "Mark/")
Example 11
Project: miasm Author: cea-sec File: symbol_exec.py License: GNU General Public License v2.0 | 5 votes |
def finish_populating_widget_popup(self, form, popup): idaapi.attach_action_to_popup(form, popup, 'my:expand', None) idaapi.attach_action_to_popup(form, popup, 'my:translate', None)
Example 12
Project: mkYARA Author: fox-it File: mkyara_plugin.py License: GNU General Public License v3.0 | 5 votes |
def finish_populating_widget_popup(self, form, popup): idaapi.attach_action_to_popup(form, popup, "mkYARA:generate_loose_yara", "mkYARA/") idaapi.attach_action_to_popup(form, popup, "mkYARA:generate_normal_yara", "mkYARA/") idaapi.attach_action_to_popup(form, popup, "mkYARA:generate_strict_yara", "mkYARA/") idaapi.attach_action_to_popup(form, popup, "mkYARA:generate_data_yara", "mkYARA/")
Example 13
Project: LazyIDA Author: L4ys File: LazyIDA.py License: MIT License | 5 votes |
def finish_populating_widget_popup(self, form, popup): form_type = idaapi.get_widget_type(form) if form_type == idaapi.BWN_DISASM or form_type == idaapi.BWN_DUMP: t0, t1, view = idaapi.twinpos_t(), idaapi.twinpos_t(), idaapi.get_current_viewer() if idaapi.read_selection(view, t0, t1) or idc.get_item_size(idc.get_screen_ea()) > 1: idaapi.attach_action_to_popup(form, popup, ACTION_XORDATA, None) idaapi.attach_action_to_popup(form, popup, ACTION_FILLNOP, None) for action in ACTION_CONVERT: idaapi.attach_action_to_popup(form, popup, action, "Convert/") if form_type == idaapi.BWN_DISASM and (ARCH, BITS) in [(idaapi.PLFM_386, 32), (idaapi.PLFM_386, 64), (idaapi.PLFM_ARM, 32),]: idaapi.attach_action_to_popup(form, popup, ACTION_SCANVUL, None)
Example 14
Project: WatchDBG-IDA Author: Tekiter File: util.py License: MIT License | 5 votes |
def finish_populating_tform_popup(self, form, popup): #formtype = idaapi.get_tform_type(form) #if formtype == idaapi.BWN_DISASM or idaapi.BWN_DUMP: for action, position, condition in self.popups: if condition(form): idaapi.attach_action_to_popup(form, popup, action, position)
Example 15
Project: flare-ida Author: fireeye File: stack_strings_helper.py License: Apache License 2.0 | 5 votes |
def cb(event, *args): if event == ida_hexrays.hxe_populating_popup: widget, phandle, vu = args res = idaapi.attach_action_to_popup(vu.ct, None, ACTION_NAME) return 0
Example 16
Project: win_driver_plugin Author: FSecureLABS File: create_tab_table.py License: BSD 3-Clause "New" or "Revised" License | 4 votes |
def create_ioctl_tab(tracker, modal=False): global ioctl_tracker ioctl_tracker = tracker items = get_all_defines() idaapi.register_action( idaapi.action_desc_t( "choose2:remove_ioctl", "Invalid IOCTL", remove_ioctl(items) ) ) action = "send_ioctl" actname = "choose2:act%s" % action idaapi.register_action( idaapi.action_desc_t( actname, "Send IOCTL", send_ioctl_handler_t(items))) idaapi.register_action( idaapi.action_desc_t( "choose2:actcopy_defines", "Copy All Defines", copy_defines_handler_t(items))) idaapi.register_action( idaapi.action_desc_t( "choose2:actstop_unload", "Stop & Unload Driver", stop_unload_handler_t())) idaapi.register_action( idaapi.action_desc_t( "choose2:actstart_load", "Load & Start Driver", start_load_handler_t())) global c c = MyChoose2("IOCTL Code Viewer", items, modal=modal) c.show() form = idaapi.get_current_tform() idaapi.attach_action_to_popup(form, None, "choose2:act%s" % action) idaapi.attach_action_to_popup(form, None, "choose2:actcopy_defines") idaapi.attach_action_to_popup(form, None, "choose2:actstop_unload") idaapi.attach_action_to_popup(form, None, "choose2:actstart_load") idaapi.attach_action_to_popup(form, None, "choose2:remove_ioctl")
Example 17
Project: grap Author: AirbusCyber File: PatternGenerationWidget.py License: MIT License | 4 votes |
def finish_populating_widget_popup(self, form, popup): try: b = idaapi.get_widget_type(form) == idaapi.BWN_DISASM except: b = idaapi.get_tform_type(form) == idaapi.BWN_DISASM if b: # Add separator idaapi.attach_action_to_popup(form, popup, None, None) # Add actions try: currentAddress = idc.get_screen_ea() except: currentAddress = idc.ScreenEA() #if currentAddress in [node.node_id for node in self.cc.PatternGenerator.targetNodes]: if currentAddress in self.cc.PatternGenerator.coloredNodes: idaapi.attach_action_to_popup(form, popup, "grap:pg:match_default", None) idaapi.attach_action_to_popup(form, popup, "grap:pg:match_full", None) idaapi.update_action_label("grap:pg:match_full", self.cc.PatternGenerator.preview_match(currentAddress, "[grap] Full match", "match_full")) idaapi.attach_action_to_popup(form, popup, "grap:pg:match_opcode_arg1", None) idaapi.update_action_label("grap:pg:match_opcode_arg1", self.cc.PatternGenerator.preview_match(currentAddress, "[grap] Opcode+arg1", "match_opcode_arg1")) idaapi.attach_action_to_popup(form, popup, "grap:pg:match_opcode_arg2", None) idaapi.update_action_label("grap:pg:match_opcode_arg2", self.cc.PatternGenerator.preview_match(currentAddress, "[grap] Opcode+arg2", "match_opcode_arg2")) idaapi.attach_action_to_popup(form, popup, "grap:pg:match_opcode_arg3", None) idaapi.update_action_label("grap:pg:match_opcode_arg3", self.cc.PatternGenerator.preview_match(currentAddress, "[grap] Opcode+arg3", "match_opcode_arg3")) idaapi.attach_action_to_popup(form, popup, "grap:pg:match_opcode", None) idaapi.update_action_label("grap:pg:match_opcode", self.cc.PatternGenerator.preview_match(currentAddress, "[grap] Opcode", "match_opcode")) idaapi.attach_action_to_popup(form, popup, "grap:pg:match_wildcard", None) idaapi.attach_action_to_popup(form, popup, "grap:pg:remove_target", None) for type in ["match_default", "match_full", "match_opcode_arg1", "match_opcode_arg2", "match_opcode_arg3", "match_opcode", "match_wildcard"]: idaapi.update_action_icon("grap:pg:"+type, -1) if currentAddress not in self.cc.PatternGenerator.targetNodeType: type = "match_default" else: type = self.cc.PatternGenerator.targetNodeType[currentAddress] idaapi.update_action_icon("grap:pg:"+type, self.selected_icon_number) elif self.cc.PatternGenerator.rootNode is None or currentAddress != self.cc.PatternGenerator.rootNode.node_id: idaapi.attach_action_to_popup(form, popup, "grap:pg:set_root", None) idaapi.attach_action_to_popup(form, popup, "grap:pg:add_target", None)
Example 18
Project: prefix Author: gaasedelen File: ida_prefix.py License: MIT License | 4 votes |
def hxe_callback(self, event, *args): """ HexRays event callback. We lump this under the (UI) Hooks class for organizational reasons. """ # # if the event callback indicates that this is a popup menu event # (in the hexrays window), we may want to install our prefix menu # actions depending on what the cursor right clicked. # if event == idaapi.hxe_populating_popup: form, popup, vu = args # # if the user cursor isn't hovering over a function ref, there # is nothing for us to do # if get_cursor_func_ref() == idaapi.BADADDR: return 0 # # the user cursor is hovering over a valid target for a recursive # function prefix. insert the prefix action entry into the menu # idaapi.attach_action_to_popup( form, popup, prefix_t.ACTION_RECURSIVE, "Rename global item", idaapi.SETMENU_APP ) # done return 0 #------------------------------------------------------------------------------ # Prefix Wrappers #------------------------------------------------------------------------------