npx skills add ...
npx skills add p4nda0s/reverse-skills --skill rev-symbol
Restore function symbols by analyzing code patterns, strings, constants, and cross-references
npx skills add p4nda0s/reverse-skills --skill rev-symbol
Analyze function code characteristics to recover/identify function symbols and names.
Determine which IDA access method is available:
Option A — IDA Pro MCP (preferred if connected):
Check if the IDA Pro MCP server is connected (look for an active ida-pro or equivalent MCP connection). If connected, you can query IDA directly via MCP tools — no exported files needed. Proceed with the analysis using MCP.
Option B — IDA-NO-MCP exported data: If MCP is not connected, check if IDA-NO-MCP exported data exists in the current directory:
decompile/ directory exists.c files insideIf neither MCP nor exported data is available, prompt the user:
Each .c file contains function metadata comments and decompiled code:
Carefully examine the target function for:
0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x103254760xEDB88320ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/0x63, 0x7C, 0x77, 0x7B...0x78, 0x9C (compression header)If you can identify a known algorithm through constants/structure, tell the user directly.
Analyze Callees (called functions):
Read functions in the callees list
For each callee, check if its address exists in imports.txt
Recognize call patterns even when symbols are missing:
Paired function patterns (identify by matching call pairs):
Return value patterns:
Analyze Callers (calling functions):
Collect the following information:
strings.txt for addresses used in the function)imports.txt)exports.txtBased on collected information:
First attempt local reasoning based on:
If uncertain, use Web Search to search:
0x67452301 0xEFCDAB89 algorithmrotate left xor constant algorithmfunction(int, int, 0) socket./
├── decompile/ # Decompiled C code directory
│ ├── 0x401000.c # One file per function, named by hex address
│ ├── 0x401234.c
│ └── ...
├── decompile_failed.txt # Failed decompilation list
├── decompile_skipped.txt # Skipped functions list
├── strings.txt # String table (address, length, type, content)
├── imports.txt # Import table (address:function_name)
├── exports.txt # Export table (address:function_name)
└── memory/ # Memory hexdump (1MB chunks)/*
* func-name: sub_401000
* func-address: 0x401000
* callers: 0x402000, 0x403000 // List of functions that call this function
* callees: 0x404000, 0x405000 // List of functions called by this function
*/
int __fastcall sub_401000(int a1, int a2)
{
// Decompiled code...
}