本文整理汇总了Python中idaapi.init_hexrays_plugin方法的典型用法代码示例。如果您正苦于以下问题:Python idaapi.init_hexrays_plugin方法的具体用法?Python idaapi.init_hexrays_plugin怎么用?Python idaapi.init_hexrays_plugin使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类idaapi
的用法示例。
在下文中一共展示了idaapi.init_hexrays_plugin方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _notify_status_changed
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import init_hexrays_plugin [as 别名]
def _notify_status_changed(self, status):
# enable / disable hook based on the painter being enabled or disabled
if status:
self._idp_hooks.hook()
if idaapi.init_hexrays_plugin():
idaapi.install_hexrays_callback(self._hxe_callback)
else:
self._idp_hooks.unhook()
if idaapi.init_hexrays_plugin():
idaapi.remove_hexrays_callback(self._hxe_callback)
# send the status changed signal...
super(IDAPainter, self)._notify_status_changed(status)
#------------------------------------------------------------------------------
# Paint Actions
#------------------------------------------------------------------------------
示例2: __init__
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import init_hexrays_plugin [as 别名]
def __init__(self):
self.is_windows = sys.platform.startswith('win')
self.is_ida64 = GetIdbPath().endswith(".i64") # hackhackhack - check if we're ida64 or ida32
logger.debug("[+] is_windows: %r" % self.is_windows)
logger.debug("[+] is_ida64: %r" % self.is_ida64)
self.my_path = os.path.abspath(__file__)
self.temp_path = None
self._init_target()
# settings (form)
# todo: load from configfile if available.
self.output_path = None
self.chk_annotate_stackvar_size = False
self.chk_annotate_xrefs = False
self.chk_decompile_imports = False
self.chk_decompile_imports_recursive = False
self.chk_decompile_alternative = False
# self.ida_home = idaapi.idadir(".")
self.ida_home = GetIdaDirectory()
# wait for ida analysis to finish
self.wait_for_analysis_to_finish()
if not idaapi.init_hexrays_plugin():
logger.warning("forcing hexrays to load...")
self.load_plugin_decompiler()
if not idaapi.init_hexrays_plugin():
raise Exception("hexrays decompiler is not available :(")
示例3: _init_hexrays_hooks
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import init_hexrays_plugin [as 别名]
def _init_hexrays_hooks(self):
"""
Install Hex-Rrays hooks (when available).
NOTE: This is called when the ui_ready_to_run event fires.
"""
if idaapi.init_hexrays_plugin():
idaapi.install_hexrays_callback(self._hooks.hxe_callback)
#--------------------------------------------------------------------------
# IDA Actions
#--------------------------------------------------------------------------
示例4: init
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import init_hexrays_plugin [as 别名]
def init(self):
"""
Ensure plugin's line modification function is called whenever needed.
If Hex-Rays is not installed, or is not initialized yet, then plugin
will not load. To ensure that the plugin loads after Hex-Rays, please
name your plugin's .py file with a name that starts lexicographically
after "hexx86f"
"""
try:
if idaapi.init_hexrays_plugin():
def hexrays_event_callback(event, *args):
if event == idaapi.hxe_refresh_pseudocode:
# We use this event instead of hxe_text_ready because
# MacOSX doesn't seem to work well with it
# TODO: Look into this
vu, = args
self.visit_func(vu.cfunc)
return 0
idaapi.install_hexrays_callback(hexrays_event_callback)
else:
return idaapi.PLUGIN_SKIP
except AttributeError:
idc.Warning('''init_hexrays_plugin() not found.
Skipping Hex-Rays plugin.''')
return idaapi.PLUGIN_KEEP
示例5: main
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import init_hexrays_plugin [as 别名]
def main():
if not idaapi.init_hexrays_plugin():
return False
print "Hex-rays version %s has been detected" % idaapi.get_hexrays_version()
idaapi.install_hexrays_callback(event_callback)
示例6: run
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import init_hexrays_plugin [as 别名]
def run(self):
'''Start the plugin.'''
if not idaapi.init_hexrays_plugin():
print "HRDEV Error: Failed to initialise Hex-Rays plugin."
return
function_name = idaapi.get_func_name(idaapi.get_screen_ea())
demangled_name = self.tools.demangle_name(function_name)
src = idaapi.decompile(idaapi.get_screen_ea())
file_name = '{}.cpp'.format(self.tools.to_file_name(demangled_name))
cache_path = os.path.sep.join([tempfile.gettempdir(),
'hrdev_cache',
self._bin_name])
# Create required directories if they dont exist
tmp_dir_path = os.path.sep.join([tempfile.gettempdir(), 'hrdev_cache'])
if not os.path.isdir(tmp_dir_path):
os.mkdir(tmp_dir_path)
if not os.path.isdir(cache_path):
os.mkdir(cache_path)
complete_path = os.path.sep.join([cache_path, file_name])
idaapi.msg("HRDEV cache path: {}\n".format(complete_path))
# Check if file is already in cache
if not os.path.isfile(complete_path) or \
self.config_main.getboolean('etc', 'disable_cache'):
self.tools.save_file(complete_path, str(src))
self.tools.set_file_path(complete_path)
lvars = {}
for v in src.lvars:
_type = idaapi.print_tinfo('', 0, 0, idaapi.PRTYPE_1LINE, v.tif, '', '')
lvars[str(v.name)] = "{} {} {}".\
format(_type, str(v.name), str(v.cmt))
max_title = self.config_main.getint('etc', 'max_title')
self.gui = hrdev_plugin.include.gui.Canvas(self.config_main,
self.config_theme,
self.tools,
lvars,
demangled_name[:max_title])
self.gui.Show('HRDEV')
self.parser = hrdev_plugin.include.syntax.Parser(self, lvars)
self.parser.run(complete_path)
return