binary-triage
Original:🇺🇸 English
Translated
Performs initial binary triage by surveying memory layout, strings, imports/exports, and functions to quickly understand what a binary does and identify suspicious behavior. Use when first examining a binary, when user asks to triage/survey/analyze a program, or wants an overview before deeper reverse engineering.
1installs
Added on
NPX Install
npx skill4agent add th3w1zard1/reverse-engineering-assistant binary-triageTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Binary Triage
Instructions
We are triaging a binary to quickly understand what it does. This is an initial survey, not deep analysis. Our goal is to:
- Identify key components and behaviors
- Flag suspicious or interesting areas
- Create a task list of next steps for deeper investigation
Binary triage with ReVa
Follow this systematic workflow using ReVa's MCP tools:
1. Identify the Program
- Use to see the active program
get-current-program - Or use to see available programs in the project
list-project-files - Note the (e.g., "/Hatchery.exe") for use in subsequent tools
programPath
2. Survey Memory Layout
- Use to understand the binary structure
get-memory-blocks - Examine key sections:
- - executable code
.text - - initialized data
.data - - read-only data (strings, constants)
.rodata - - uninitialized data
.bss
- Flag unusual characteristics:
- Unusually large sections
- Packed/encrypted sections
- Executable data sections
- Writable code sections
3. Survey Strings
- Use to see total string count
get-strings-count - Use with pagination (100-200 strings at a time)
get-strings - Look for indicators of functionality or malicious behavior:
- Network: URLs, IP addresses, domain names, API endpoints
- File System: File paths, registry keys, configuration files
- APIs: Function names, library references
- Messages: Error messages, debug strings, log messages
- Suspicious Keywords: admin, password, credential, token, crypto, encrypt, decrypt, download, execute, inject, shellcode, payload
4. Survey Symbols and Imports
- Use with
get-symbols-countto count importsincludeExternal=true - Use with
get-symbolsandincludeExternal=truefilterDefaultNames=true - Focus on external symbols (imports from libraries)
- Flag interesting/suspicious imports by category:
- Network APIs: connect, send, recv, WSAStartup, getaddrinfo, curl_*, socket
- File I/O: CreateFile, WriteFile, ReadFile, fopen, fwrite, fread
- Process Manipulation: CreateProcess, exec, fork, system, WinExec, ShellExecute
- Memory Operations: VirtualAlloc, VirtualProtect, mmap, mprotect
- Crypto: CryptEncrypt, CryptDecrypt, EVP_, AES_, bcrypt, RC4
- Anti-Analysis: IsDebuggerPresent, CheckRemoteDebuggerPresent, ptrace
- Registry: RegOpenKey, RegSetValue, RegQueryValue
- Note the ratio of imports to total symbols (heavy import usage may indicate reliance on libraries)
5. Survey Functions
- Use with
get-function-countto count named functionsfilterDefaultNames=true - Use with
get-function-countto count all functionsfilterDefaultNames=false - Calculate ratio of named vs unnamed functions (high unnamed ratio = stripped binary)
- Use with
get-functionsto list named functionsfilterDefaultNames=true - Identify key functions:
- Entry points: ,
entry,start_start - Main functions: ,
main,WinMain,DllMain_main - Suspicious names: If not stripped, look for revealing function names
- Entry points:
6. Cross-Reference Analysis for Key Findings
- For interesting strings found in Step 3:
- Use with
find-cross-referencesanddirection="to"includeContext=true - Identify which functions reference suspicious strings
- Use
- For suspicious imports found in Step 4:
- Use with
find-cross-referencesanddirection="to"includeContext=true - Identify which functions call suspicious APIs
- Use
- This helps prioritize which functions need detailed examination
7. Selective Initial Decompilation
- Use on entry point or main function
get-decompilation- Set to get ~30 lines initially
limit=30 - Set to see callers
includeIncomingReferences=true - Set for context snippets
includeReferenceContext=true
- Set
- Use on 1-2 suspicious functions identified in Step 6
get-decompilation- Set for quick overview
limit=20-30
- Set
- Look for high-level patterns:
- Loops (encryption/decryption routines)
- Network operations
- File operations
- Process creation
- Suspicious control flow (obfuscation indicators)
- Do not do deep analysis yet - this is just to understand general behavior
8. Document Findings and Create Task List
- Use the tool to create an actionable task list with items like:
TodoWrite- "Investigate string 'http://malicious-c2.com' (referenced at 0x00401234)"
- "Decompile function sub_401000 (calls VirtualAlloc + memcpy + CreateThread)"
- "Analyze crypto usage in function encrypt_payload (uses CryptEncrypt)"
- "Trace anti-debugging checks (IsDebuggerPresent at 0x00402000)"
- "Examine packed section .UPX0 for unpacking routine"
- Each todo should be:
- Specific (include addresses, function names, strings)
- Actionable (what needs to be investigated)
- Prioritized (most suspicious first)
Output Format
Present triage findings to the user in this structured format:
Program Overview
- Name: [Program name from programPath]
- Type: [Executable type - PE, ELF, Mach-O, etc.]
- Platform: [Windows, Linux, macOS, etc.]
Memory Layout
- Total Size: [Size in bytes/KB/MB]
- Key Sections: [List main sections with sizes and permissions]
- Unusual Characteristics: [Any packed/encrypted/suspicious sections]
String Analysis
- Total Strings: [Count from get-strings-count]
- Notable Findings: [Bullet list of interesting strings with context]
- Suspicious Indicators: [URLs, IPs, suspicious keywords found]
Import Analysis
- Total Symbols: [Count from get-symbols-count]
- External Imports: [Count of external symbols]
- Key Libraries: [Main libraries imported]
- Suspicious APIs: [Categorized list of concerning imports]
Function Analysis
- Total Functions: [Count with filterDefaultNames=false]
- Named Functions: [Count with filterDefaultNames=true]
- Stripped Status: [Yes/No based on ratio]
- Entry Point: [Address and name]
- Main Function: [Address and name]
- Key Functions: [List of important functions identified]
Suspicious Indicators
[Bulleted list of red flags discovered, prioritized by severity]
Recommended Next Steps
[Present the task list created in Step 8]
- Each item should be specific and actionable
- Prioritize by severity/importance
- Include addresses, function names, and context
Important Notes
- Speed over depth: This is triage, not full analysis. Move quickly through steps.
- Use pagination: Don't request thousands of strings/functions at once. Use chunks of 100-200.
- Focus on anomalies: Flag things that are unusual, suspicious, or interesting.
- Context is key: When using cross-references, enable for code snippets.
includeContext=true - Create actionable todos: Each next step should be specific enough for another agent to execute.
- Be systematic: Follow all 8 steps in order for comprehensive coverage.