functions/funcutils.py (24 lines of code) (raw):
import idc
import ida_dbg
def get_result(is_64bit):
if is_64bit:
res = idc.get_reg_value("RAX")
else:
res = idc.get_reg_value("EAX")
return res
def get_func_args(nth, is_64bit):
ida_dbg.refresh_debugger_memory()
if is_64bit:
four_args = ["RCX", "RDX", "R8", "R9"]
if nth == 0:
rsp = idc.get_reg_value("RSP")
result = idc.get_qword(rsp)
elif nth < 5:
result = idc.get_reg_value(four_args[nth - 1])
else:
rsp = idc.get_reg_value("RSP")
result = idc.get_qword(rsp + nth * 8)
else:
esp = idc.get_reg_value("ESP")
result = idc.get_wide_dword(esp + nth * 4)
return result