# # Hex-Rays Decompiler project # Copyright (c) 2007-2019 by Hex-Rays, support@hex-rays.com # ALL RIGHTS RESERVED. # # Sample plugin for Hex-Rays Decompiler. # It generates microcode for selection and dumps it to the output window. # # This is a rewrite in Python of the vds13 example that comes with hexrays sdk. # import ida_bytes import ida_range import ida_kernwin import ida_hexrays if ida_hexrays.init_hexrays_plugin(): sel, sea, eea = ida_kernwin.read_range_selection(None) w = ida_kernwin.warning if sel: F = ida_bytes.get_flags(sea) if ida_bytes.is_code(F): hf = ida_hexrays.hexrays_failure_t() mbr = ida_hexrays.mba_ranges_t() mbr.ranges.push_back(ida_range.range_t(sea, eea)) mba = ida_hexrays.gen_microcode(mbr, hf, None, ida_hexrays.DECOMP_WARNINGS) if mba: print("Successfully generated microcode for 0x%08x..0x%08x\n" % (sea, eea)) vp = ida_hexrays.vd_printer_t() mba._print(vp) else: w("0x%08x: %s" % (hf.errea, hf.str)) else: w("The selected range must start with an instruction") else: w("Please select a range of addresses to analyze") else: print('vds13: Hex-rays is not available.')