npx claudepluginhub vulhunt-re/skills --plugin vulhuntThis skill uses the workspace's default tool permissions.
Find function call sites in a binary.
Finds all callers of a function address in binaries via xref scans, disassembles argument setup before call sites, and shows containing functions and string refs. Useful for reverse engineering native x64 code.
Find and list functions in binaries by name, address, regex, or byte pattern. Use for binary analysis, locating specific functions, or enumerating matches.
Analyzes IDA cross-references to find callers, callees, imports, data references, call graphs, and dependency chains using SQL queries on xrefs and imports tables.
Share bugs, ideas, or general feedback.
Find function call sites in a binary.
Using the VulHunt MCP tools, open the project (open_project) and run the following Lua query (query_project) to get all the function calls:
local calls = project:calls_matching{
to = <target_call>,
}
local results = {}
for _, call in ipairs(calls) do
table.insert(results, {
caller_address = tostring(call.caller_address),
call_address = tostring(call.call_address),
})
end
return results
Possible values for <target_call>:
"system"AddressValue.new(<hex_addr>) (e.g., <hex_addr> = 0x1234){matching = "<regex>", kind = "symbol"}{matching = "41544155", kind = "bytes"}Returns a JSON object containing:
caller_address is the address of the function that makes the callcall_address is the address of the call site (specifically, the code block address where the call is made)To restrict the search to function calls where the caller also contains other calls, or the caller is a specific function, use:
local calls = project:calls_matching{
to = <target_call>,
where = function(caller)
return caller:named("<name>") and caller:has_call(<target_call>)
end
}
To verify whether a certain function calls another function, run:
local f = project:functions(<target_function>)
local has_call = f:has_call(<target_call>)
return tostring(has_call)
The returned function object contains these fields:
f.name,f.address,f.total_bytes
To get the list of call-sites within a function, run:
local f = project:functions(<target_function>)
local calls = f:calls(<target_call>)
local call_addresses = {}
for _, c in ipairs(calls) do
table.insert(call_addresses, tostring(c))
end
return call_addresses
Possible values for <target_function>:
"system"AddressValue.new(0x1234){matching = "<regex>", kind = "symbol", all = true}{matching = "41544155", kind = "bytes", all = true}
allis a boolean. If set totrue, it returns a table containing all matching functions. Iffalse(default), it returns only the first matching value. The for loop is not necessary if the function target is only one (i.e.allis not set to true)
calls_matchingcalls_matchingURLs to additional documentation pages are available at https://vulhunt.re/llm.txt
/functions) - Use this skill first to find and list functions before analyzing their call sites/dataflow-analysis) - For advanced call analysis with taint tracking and data flow between function parameters and arguments/decompiler) - View decompiled code of caller functions to better understand the calling context