Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import re as regular_expression
- import idaapi as ida_interface
- import idautils as ida_utilities
- import idc as idc_interface
- import ida_typeinf as ida_type
- import ida_search
- import ida_lines
- import ida_hexrays
- import ida_bytes
- def GetCfunc(ea):
- f = idaapi.get_func(ea)
- if f is None:
- return None
- # Decompile the function.
- cfunc = None
- try:
- cfunc = idaapi.decompile(f)
- finally:
- return cfunc
- def ChangeVariableType(func_ea, lvar, tif):
- lsi = ida_hexrays.lvar_saved_info_t()
- lsi.ll = lvar
- lsi.type = ida_typeinf.tinfo_t(tif)
- if not ida_hexrays.modify_user_lvar_info(func_ea, ida_hexrays.MLI_TYPE, lsi):
- print("[E] Could not modify lvar type for %s" % lvar.name)
- return False
- return True
- def decompile_function( function_location ):
- decompile_handle = ida_hexrays.open_pseudocode( function_location, 0 )
- for local_variable in GetCfunc( function_location ).lvars:
- type_info = local_variable.type()
- if ida_type.is_type_ptr( type_info.get_decltype() ):
- dword_type = ida_type.tinfo_t()
- ida_type.parse_decl( dword_type, ida_type.get_idati(), "_DWORD;", ida_type.PT_TYP )
- ChangeVariableType( function_location, local_variable, dword_type )
- decompile_handle.refresh_view(True)
- decompile_function( 0xDEADBEEF ) # put your own function here
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement