Python idaapi.register_action() Examples
The following are 30 code examples for showing how to use idaapi.register_action(). 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: Sark Author: tmr232 File: autoenum.py License: MIT License | 6 votes |
def init(self): self._last_enum = "" self.rename_action_desc = idaapi.action_desc_t('AutoEnum:RenameImmediate', 'Rename immediate value', RenameImmediateHandler(), 'Ctrl+Shift+M', 'Rename immediate value', -1) idaapi.register_action(self.rename_action_desc) self.autoenum_action_desc = idaapi.action_desc_t('AutoEnum:AutoEnum', 'Automatically create enum', AutoEnumHandler(), 'Shift+M', 'Automatically create enum', -1) idaapi.register_action(self.autoenum_action_desc) return idaapi.PLUGIN_KEEP
Example 2
Project: prefix Author: gaasedelen File: ida_prefix.py License: MIT License | 6 votes |
def _init_action_bulk(self): """ Register the bulk prefix action with IDA. """ # load the icon for this action self._bulk_icon_id = idaapi.load_custom_icon(plugin_resource("bulk.png")) # describe the action action_desc = idaapi.action_desc_t( self.ACTION_BULK, # The action name. "Prefix selected functions", # The action text. IDACtxEntry(bulk_prefix), # The action handler. None, # Optional: action shortcut "Assign a user prefix to the selected functions", # Optional: tooltip self._bulk_icon_id # Optional: the action icon ) # register the action with IDA assert idaapi.register_action(action_desc), "Action registration failed"
Example 3
Project: prefix Author: gaasedelen File: ida_prefix.py License: MIT License | 6 votes |
def _init_action_clear(self): """ Register the clear prefix action with IDA. """ # load the icon for this action self._clear_icon_id = idaapi.load_custom_icon(plugin_resource("clear.png")) # describe the action action_desc = idaapi.action_desc_t( self.ACTION_CLEAR, # The action name. "Clear prefixes", # The action text. IDACtxEntry(clear_prefix), # The action handler. None, # Optional: action shortcut "Clear user prefixes from the selected functions", # Optional: tooltip self._clear_icon_id # Optional: the action icon ) # register the action with IDA assert idaapi.register_action(action_desc), "Action registration failed"
Example 4
Project: prefix Author: gaasedelen File: ida_prefix.py License: MIT License | 6 votes |
def _init_action_recursive(self): """ Register the recursive rename action with IDA. """ # load the icon for this action self._recursive_icon_id = idaapi.load_custom_icon(plugin_resource("recursive.png")) # describe the action action_desc = idaapi.action_desc_t( self.ACTION_RECURSIVE, # The action name. "Recursive function prefix", # The action text. IDACtxEntry(recursive_prefix_cursor), # The action handler. None, # Optional: action shortcut "Recursively prefix callees of this function", # Optional: tooltip self._recursive_icon_id # Optional: the action icon ) # register the action with IDA assert idaapi.register_action(action_desc), "Action registration failed"
Example 5
Project: ida-scripts Author: sam-b File: neo4ida.py License: The Unlicense | 6 votes |
def registerAction(self): action_desc = idaapi.action_desc_t( self.id, self.name, self, "", self.tooltip, self.icon ) if not idaapi.register_action(action_desc): return False if not idaapi.attach_action_to_menu(self.menuPath, self.id, 0): return False if not idaapi.attach_action_to_toolbar("AnalysisToolBar", self.id): return False return True
Example 6
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 7
Project: deREferencing Author: danigargu File: dereferencing.py License: GNU General Public License v3.0 | 6 votes |
def register_munu_actions(): act_registers = '%s:registers' % PLUGIN_NAME act1 = idaapi.action_desc_t( act_registers, REGS_WIDGET_TITLE, StartHandler(REGS_WIDGET_TITLE), 'Alt-Shift-D', 'Start plugin', 122 ) idaapi.register_action(act1) idaapi.attach_action_to_menu(DBG_MENU_PATH, act_registers, idaapi.SETMENU_APP) act_stack = '%s:stack' % PLUGIN_NAME act2 = idaapi.action_desc_t(act_stack, STACK_WIDGET_TITLE, StartHandler(STACK_WIDGET_TITLE), 'Alt-Shift-E', 'Start plugin', 122 ) idaapi.register_action(act2) idaapi.attach_action_to_menu(DBG_MENU_PATH, act_stack, idaapi.SETMENU_APP)
Example 8
Project: vt-ida-plugin Author: VirusTotal File: plugin_loader.py License: Apache License 2.0 | 5 votes |
def register(cls, plugin, label): cls.plugin = plugin cls.label = label instance = cls() return idaapi.register_action(idaapi.action_desc_t( cls.get_name(), instance.get_label(), instance ))
Example 9
Project: vt-ida-plugin Author: VirusTotal File: plugin_loader.py License: Apache License 2.0 | 5 votes |
def register(cls, plugin, label): cls.plugin = plugin cls.label = label instance = cls() return idaapi.register_action(idaapi.action_desc_t( cls.get_name(), instance.get_label(), instance ))
Example 10
Project: vt-ida-plugin Author: VirusTotal File: plugin_loader.py License: Apache License 2.0 | 5 votes |
def register(cls, plugin, label): cls.plugin = plugin cls.label = label instance = cls() return idaapi.register_action(idaapi.action_desc_t( cls.get_name(), instance.get_label(), instance ))
Example 11
Project: win_driver_plugin Author: FSecureLABS File: win_driver_plugin.py License: BSD 3-Clause "New" or "Revised" License | 5 votes |
def registerAction(self): action_desc = idaapi.action_desc_t( self.id, self.name, self, self.shortcut, self.tooltip, 0 ) if not idaapi.register_action(action_desc): return False if not idaapi.attach_action_to_menu(self.menuPath, self.id, 0): return False return True
Example 12
Project: grap Author: AirbusCyber File: PatternGenerationWidget.py License: MIT License | 5 votes |
def _createContextActions(self): actions = [ ("grap:pg:set_root", None, "[grap] Set root node", self._onSetRootNode), ("grap:pg:add_target", None, "[grap] Add target node", self._onAddTargetNode), ("grap:pg:match_default", config['icons_path'] + "icons8-asterisk-24.png", "[grap] Default match (apply options)", self._onSetMatchDefault), ("grap:pg:match_full", None, "[grap] Full match", self._onSetMatchFull), ("grap:pg:match_opcode_arg1", None, "[grap] Opcode+arg1", self._onSetMatchOpcodeArg1), ("grap:pg:match_opcode_arg2", None, "[grap] Opcode+arg2", self._onSetMatchOpcodeArg2), ("grap:pg:match_opcode_arg3", None, "[grap] Opcode+arg3", self._onSetMatchOpcodeArg3), ("grap:pg:match_opcode", None, "[grap] Opcode", self._onSetMatchOpcode), ("grap:pg:match_wildcard", None, "[grap] Wildcard: *", self._onSetMatchWildcard), ("grap:pg:remove_target", config['icons_path'] + "icons8-delete.png", "[grap] Remove target node", self._onRemoveTargetNode) ] for actionId, icon_path, text, method in (a for a in actions): if icon_path is not None and icon_path != "": icon_number = idaapi.load_custom_icon(icon_path) # Describe the action action_desc = idaapi.action_desc_t( actionId, # The action name. This acts like an ID and must be unique text, # The action text. PatternGenerationHandler(method), # The action handler. None, None, icon_number) else: # Describe the action action_desc = idaapi.action_desc_t( actionId, # The action name. This acts like an ID and must be unique text, # The action text. PatternGenerationHandler(method)) # The action handler. # Register the action idaapi.register_action(action_desc) self.actionsDefined = True
Example 13
Project: BRUTAL-IDA Author: tmr232 File: brutal_ida.py License: MIT License | 5 votes |
def init(brutal_self): idaapi.unregister_action('Undo') idaapi.unregister_action('Redo') brutal_self.brutal_action_handler = BrutalActionHandler() brutal_action_desc = idaapi.action_desc_t('BRUTAL', 'BRUTAL IDA', brutal_self.brutal_action_handler, '', 'IDA', BRUTAL6_ICON) idaapi.register_action(brutal_action_desc) idaapi.create_toolbar('BRUTAL IDA', 'BRUTAL IDA') brutal_self.brutal_letter_handlers = [] for brutal_letter in 'BRUTAL': brutal_letter_handler = BrutalLetterHandler() brutal_self.brutal_letter_handlers.append(brutal_letter_handler) brutal_label = 'BRUTAL {}'.format(brutal_letter) brutal_letter_desc = idaapi.action_desc_t(brutal_label, brutal_label, brutal_letter_handler, '', brutal_letter, BRUTAL_LETTERS[brutal_letter]) idaapi.register_action(brutal_letter_desc) idaapi.attach_action_to_toolbar('BRUTAL IDA', brutal_label) idaapi.attach_action_to_toolbar('BRUTAL IDA', 'BRUTAL') brutal_self.brutal_hotkey = idaapi.add_hotkey('Ctrl+Z', brutal_self.dispatch_brutality) return idaapi.PLUGIN_KEEP
Example 14
Project: heap-viewer Author: danigargu File: heap_viewer.py License: GNU General Public License v3.0 | 5 votes |
def add_menus(self): # To avoid creating multiple plugin_t instances this = self class StartHandler(idaapi.action_handler_t): def __init__(self): idaapi.action_handler_t.__init__(self) def activate(self, ctx): this.run() return 1 def update(self, ctx): return idaapi.AST_ENABLE_ALWAYS act_name = '%s:start' % PLUGNAME act_desc = idaapi.action_desc_t( act_name, # The action name. Must be unique PLUGNAME, # Action Text StartHandler(), # Action handler None, # Optional shortcut 'Start plugin', # Action tooltip 122 # Icon ) idaapi.register_action(act_desc) idaapi.attach_action_to_menu( 'Debugger/Debugger windows/', act_name, idaapi.SETMENU_APP )
Example 15
Project: DIE Author: ynvb File: DIE.py License: MIT License | 5 votes |
def add_menu_item_helper(self, name, text, tooltip, handler, icon, shortcut): description = idaapi.action_desc_t(name, text, handler, shortcut, tooltip, icon) idaapi.register_action(description) idaapi.attach_action_to_menu("DIE/" + text, name, idaapi.SETMENU_APP) self._menus_names.append(name)
Example 16
Project: Sark Author: tmr232 File: ui.py License: MIT License | 5 votes |
def register(cls): """Register the action. Each action MUST be registered before it can be used. To remove the action use the `unregister` method. """ action_desc = cls.get_desc() return idaapi.register_action(action_desc)
Example 17
Project: Sark Author: tmr232 File: highlight_calls.py License: MIT License | 5 votes |
def init(self): self.lines = set() self.settings = IDASettings('HighlightCalls') try: self.set_color(self.settings['color']) except KeyError: self.settings.user['color'] = HIGHLIGHT_COLOR self.set_color(HIGHLIGHT_COLOR) self.ui_hooks = UiHooks(self.lines) self.toggle_action_desc = idaapi.action_desc_t('HighlightCalls:Toggle', 'Toggle call highlighting', ToggleHighlightHandler(self.enable_highlights, self.disable_highlights), '', 'Toggle call highlighting', -1) idaapi.register_action(self.toggle_action_desc) self.color_selector = idaapi.action_desc_t('HighlightCalls:SelectColor', 'Select highlight color', SelectColorHandler(set_color=self.set_color), '', 'Select highlight color', -1) idaapi.register_action(self.color_selector) idaapi.attach_action_to_menu('View/', self.toggle_action_desc.name, idaapi.SETMENU_APP) idaapi.attach_action_to_menu('View/', self.color_selector.name, idaapi.SETMENU_APP) return idaapi.PLUGIN_KEEP
Example 18
Project: lighthouse Author: gaasedelen File: ida_integration.py License: MIT License | 5 votes |
def _install_load_file(self): """ Install the 'File->Load->Code coverage file...' menu entry. """ # create a custom IDA icon icon_path = plugin_resource(os.path.join("icons", "load.png")) icon_data = open(icon_path, "rb").read() self._icon_id_file = idaapi.load_custom_icon(data=icon_data) # describe a custom IDA UI action action_desc = idaapi.action_desc_t( self.ACTION_LOAD_FILE, # The action name "~C~ode coverage file...", # The action text IDACtxEntry(self.interactive_load_file), # The action handler None, # Optional: action shortcut "Load individual code coverage file(s)", # Optional: tooltip self._icon_id_file # Optional: the action icon ) # register the action with IDA result = idaapi.register_action(action_desc) if not result: RuntimeError("Failed to register load_file action with IDA") # attach the action to the File-> dropdown menu result = idaapi.attach_action_to_menu( "File/Load file/", # Relative path of where to add the action self.ACTION_LOAD_FILE, # The action ID (see above) idaapi.SETMENU_APP # We want to append the action after ^ ) if not result: RuntimeError("Failed action attach load_file") logger.info("Installed the 'Code coverage file' menu entry")
Example 19
Project: lighthouse Author: gaasedelen File: ida_integration.py License: MIT License | 5 votes |
def _install_load_batch(self): """ Install the 'File->Load->Code coverage batch...' menu entry. """ # create a custom IDA icon icon_path = plugin_resource(os.path.join("icons", "batch.png")) icon_data = open(icon_path, "rb").read() self._icon_id_batch = idaapi.load_custom_icon(data=icon_data) # describe a custom IDA UI action action_desc = idaapi.action_desc_t( self.ACTION_LOAD_BATCH, # The action name "~C~ode coverage batch...", # The action text IDACtxEntry(self.interactive_load_batch), # The action handler None, # Optional: action shortcut "Load and aggregate code coverage files", # Optional: tooltip self._icon_id_batch # Optional: the action icon ) # register the action with IDA result = idaapi.register_action(action_desc) if not result: RuntimeError("Failed to register load_batch action with IDA") # attach the action to the File-> dropdown menu result = idaapi.attach_action_to_menu( "File/Load file/", # Relative path of where to add the action self.ACTION_LOAD_BATCH, # The action ID (see above) idaapi.SETMENU_APP # We want to append the action after ^ ) if not result: RuntimeError("Failed action attach load_batch") logger.info("Installed the 'Code coverage batch' menu entry")
Example 20
Project: lighthouse Author: gaasedelen File: ida_integration.py License: MIT License | 5 votes |
def _install_open_coverage_xref(self): """ Install the right click 'Coverage Xref' context menu entry. """ # create a custom IDA icon icon_path = plugin_resource(os.path.join("icons", "batch.png")) icon_data = open(icon_path, "rb").read() self._icon_id_xref = idaapi.load_custom_icon(data=icon_data) # describe a custom IDA UI action action_desc = idaapi.action_desc_t( self.ACTION_COVERAGE_XREF, # The action name "Xrefs coverage sets...", # The action text IDACtxEntry(self._pre_open_coverage_xref),# The action handler None, # Optional: action shortcut "List coverage sets containing this address", # Optional: tooltip self._icon_id_xref # Optional: the action icon ) # register the action with IDA result = idaapi.register_action(action_desc) if not result: RuntimeError("Failed to register coverage_xref action with IDA") self._ui_hooks.hook() logger.info("Installed the 'Coverage Xref' menu entry")
Example 21
Project: lighthouse Author: gaasedelen File: ida_integration.py License: MIT License | 5 votes |
def _install_open_coverage_overview(self): """ Install the 'View->Open subviews->Coverage Overview' menu entry. """ # create a custom IDA icon icon_path = plugin_resource(os.path.join("icons", "overview.png")) icon_data = open(icon_path, "rb").read() self._icon_id_overview = idaapi.load_custom_icon(data=icon_data) # describe a custom IDA UI action action_desc = idaapi.action_desc_t( self.ACTION_COVERAGE_OVERVIEW, # The action name "~C~overage Overview", # The action text IDACtxEntry(self.open_coverage_overview), # The action handler None, # Optional: action shortcut "Open database code coverage overview", # Optional: tooltip self._icon_id_overview # Optional: the action icon ) # register the action with IDA result = idaapi.register_action(action_desc) if not result: RuntimeError("Failed to register open coverage overview action with IDA") # attach the action to the View-> dropdown menu result = idaapi.attach_action_to_menu( "View/Open subviews/Hex dump", # Relative path of where to add the action self.ACTION_COVERAGE_OVERVIEW, # The action ID (see above) idaapi.SETMENU_INS # We want to insert the action before ^ ) if not result: RuntimeError("Failed action attach to 'View/Open subviews' dropdown") logger.info("Installed the 'Coverage Overview' menu entry")
Example 22
Project: miasm Author: cea-sec File: menu.py License: GNU General Public License v2.0 | 5 votes |
def register(self, name, label, shortcut=None, tooltip=None, icon=-1): action = idaapi.action_desc_t( name, # The action name. This acts like an ID and must be unique label, # The action text. self, # The action handler. shortcut,# Optional: the action shortcut tooltip, # Optional: the action tooltip (available in menus/toolbar) icon, # Optional: the action icon (shows when in menus/toolbars) ) idaapi.register_action(action) self.name = name return action
Example 23
Project: idamagnum Author: lucasg File: idamagnum_plugin.py License: MIT License | 5 votes |
def _attach_to_menu_items(self): self.search_magic_desc = idaapi.action_desc_t( 'idamagnum:searchmagic', 'search magic number ...', SearchMagicNumber(self), "Shift+M", 'Search this value on MagnumDB', ) self.configure_plugin_desc = idaapi.action_desc_t( 'idamagnum:configure', 'Configure', ConfigureIdaMagnum(self), "", 'Configure plugin', ) idaapi.register_action(self.search_magic_desc) idaapi.register_action(self.configure_plugin_desc) idaapi.attach_action_to_menu( 'Edit/Plugins/IdaMagnum/', 'idamagnum:searchmagic', idaapi.SETMENU_APP ) idaapi.attach_action_to_menu( 'Edit/Plugins/IdaMagnum/', 'idamagnum:configure', idaapi.SETMENU_APP ) return 0
Example 24
Project: IDAFuzzy Author: Ga-ryo File: ida_fuzzy.py License: MIT License | 5 votes |
def init(self): print("Fuzzy Search Plugin loaded.") idaapi.register_action( idaapi.action_desc_t("fz:fuzzysearch", "Fuzzy Search", fuzzy_search_handler(), "Shift+SPACE", "", -1)) return idaapi.PLUGIN_KEEP
Example 25
Project: ida-batch_decompile Author: tintinweb File: ida_batch_decompile.py License: GNU General Public License v3.0 | 5 votes |
def init(self): NO_HOTKEY = "" SETMENU_INS = 0 NO_ARGS = tuple() logger.debug("[+] %s.init()" % self.__class__.__name__) self.menuitems = [] logger.debug("[+] setting up menus for ida version %s" % idaapi.IDA_SDK_VERSION) if idaapi.IDA_SDK_VERSION >= 700: # >= 700 action_desc = idaapi.action_desc_t("tintinweb:batchdecompile:load", self.wanted_name, IdaDecompileUiActionHandler(self)) idaapi.register_action(action_desc) idaapi.attach_action_to_menu(''.join(self.wanted_menu), "tintinweb:batchdecompile:load", idaapi.SETMENU_APP) else: menu = idaapi.add_menu_item(self.wanted_menu[0], self.wanted_menu[1], NO_HOTKEY, SETMENU_INS, self.menu_config, NO_ARGS) self.menuitems.append(menu) return idaapi.PLUGIN_KEEP
Example 26
Project: UEFI_RETool Author: yeggor File: ui.py License: MIT License | 5 votes |
def init_menu(action_handler): action = '{}:loadfile'.format(NAME) action_desc = idaapi.action_desc_t( action, '{}...'.format(NAME), action_handler, 'Ctrl+Alt+J', '{} dependency browser'.format(NAME), ) idaapi.register_action(action_desc) idaapi.attach_action_to_menu('File', action, idaapi.SETMENU_APP)
Example 27
Project: WatchDBG-IDA Author: Tekiter File: util.py License: MIT License | 5 votes |
def register(self, id, content, callback, icon=-1, shortcut=None): nid = self._convert(id) action = idaapi.action_desc_t(nid, content, ActionHandler(nid, callback), shortcut, None, icon) self._actions[id] = action idaapi.register_action(action)
Example 28
Project: Stingray Author: darx0r File: Stingray.py License: GNU General Public License v3.0 | 5 votes |
def init(): NO_HOTKEY = "" SETMENU_INS = 0 NO_ARGS = tuple() config_action_text = "{} Config".format(ConfigStingray.PLUGIN_NAME) idaapi.register_action(idaapi.action_desc_t(ConfigStingray.ACTION_NAME, config_action_text, ConfigStingray())) idaapi.attach_action_to_menu("Options/", ConfigStingray.ACTION_NAME, idaapi.SETMENU_APP) ConfigStingray.load()
Example 29
Project: vxhunter Author: PAGalaxyLab File: vxhunter_ida.py License: BSD 2-Clause "Simplified" License | 5 votes |
def register(self, plugin, label): self.plugin = plugin self.label = label instance = self() return idaapi.register_action(idaapi.action_desc_t( self.get_name(), # Name. Acts as an ID. Must be unique. instance.get_label(), # Label. That's what users see. instance # Handler. Called when activated, and for updating ))
Example 30
Project: findcrypt-yara Author: polymorf File: findcrypt3.py License: BSD 3-Clause "New" or "Revised" License | 5 votes |
def register(self, plugin, label): self.plugin = plugin self.label = label instance = self() return idaapi.register_action(idaapi.action_desc_t( self.get_name(), # Name. Acts as an ID. Must be unique. instance.get_label(), # Label. That's what users see. instance # Handler. Called when activated, and for updating ))