Skip to main content
Glama

get_stack_frame_variables

Retrieve stack frame variables for a specified function in IDA Pro, enabling detailed reverse engineering analysis by identifying local variables and their addresses.

Instructions

Retrieve the stack frame variables for a given function

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
function_addressYesAddress of the disassembled function to retrieve the stack frame variables

Implementation Reference

  • Core helper function that implements the logic to extract stack frame variables from IDA's function frame type information.
    def get_stack_frame_variables_internal( fn_addr: int, raise_error: bool ) -> list[StackFrameVariable]: from .sync import ida_major if ida_major < 9: return [] func = idaapi.get_func(fn_addr) if not func: if raise_error: raise IDAError(f"No function found at address {fn_addr}") return [] tif = ida_typeinf.tinfo_t() if not tif.get_type_by_tid(func.frame) or not tif.is_udt(): return [] members: list[StackFrameVariable] = [] udt = ida_typeinf.udt_type_data_t() tif.get_udt_details(udt) for udm in udt: if not udm.is_gap(): name = udm.name offset = udm.offset // 8 size = udm.size // 8 type = str(udm.type) members.append( StackFrameVariable( name=name, offset=hex(offset), size=hex(size), type=type ) ) return members
  • MCP tool handler 'stack_frame' that provides stack frame variables for given addresses by calling the internal helper.
    @tool @idaread def stack_frame(addrs: Annotated[list[str] | str, "Address(es)"]) -> list[dict]: """Get stack vars""" addrs = normalize_list_input(addrs) results = [] for addr in addrs: try: ea = parse_address(addr) vars = get_stack_frame_variables_internal(ea, True) results.append({"addr": addr, "vars": vars}) except Exception as e: results.append({"addr": addr, "vars": None, "error": str(e)}) return results
  • Type definition (TypedDict) for stack frame variable objects returned by the implementation.
    class StackFrameVariable(TypedDict): name: str offset: str size: str type: str
  • MCP resource handler that exposes stack frame variables via URI 'ida://stack/{func_addr}'.
    @resource("ida://stack/{func_addr}") @idaread def stack_func_resource(func_addr: Annotated[str, "Function address"]) -> dict: """Get stack frame variables for a function""" from .utils import get_stack_frame_variables_internal ea = parse_address(func_addr) variables = get_stack_frame_variables_internal(ea, raise_error=True) return {"addr": hex(ea), "variables": variables}

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mrexodia/ida-pro-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server