Files
idapython-src/examples/hexrays/vds13.py
T
2019-10-15 15:05:24 +02:00

40 lines
1.3 KiB
Python

#
# 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.')