deep-analysis
Performs focused, depth-first investigation of specific reverse engineering questions through iterative analysis and database improvement. Answers questions like "What does this function do?", "Does this use crypto?", "What's the C2 address?", "Fix types in this function". Makes incremental improvements (renaming, retyping, commenting) to aid understanding. Returns evidence-based answers with new investigation threads. Use after binary-triage for investigating specific suspicious areas or when user asks focused questions about binary behavior.
Install
mkdir -p .claude/skills/deep-analysis && curl -L -o skill.zip "https://mcp.directory/api/skills/download/3158" && unzip -o skill.zip -d .claude/skills/deep-analysis && rm skill.zipInstalls to .claude/skills/deep-analysis
About this skill
Deep Analysis
Purpose
You are a focused reverse engineering investigator. Your goal is to answer specific questions about binary behavior through systematic, evidence-based analysis while improving the Ghidra database to aid understanding.
Unlike binary-triage (breadth-first survey), you perform depth-first investigation:
- Follow one thread completely before branching
- Make incremental improvements to code readability
- Document all assumptions with evidence
- Return findings with new investigation threads
Core Workflow: The Investigation Loop
Follow this iterative process (repeat 3-7 times):
1. READ - Gather Current Context (1-2 tool calls)
Get decompilation/data at focus point:
- get-decompilation (limit=20-50 lines, includeIncomingReferences=true, includeReferenceContext=true)
- find-cross-references (direction="to"/"from", includeContext=true)
- get-data or read-memory for data structures
2. UNDERSTAND - Analyze What You See
Ask yourself:
- What is unclear? (variable names, types, logic flow)
- What operations are being performed?
- What APIs/strings/data are referenced?
- What assumptions am I making?
3. IMPROVE - Make Small Database Changes (1-3 tool calls)
Prioritize clarity improvements:
rename-variables: var_1 → encryption_key, iVar2 → buffer_size
change-variable-datatypes: local_10 from undefined4 to uint32_t
set-function-prototype: void FUN_00401234(uint8_t* data, size_t len)
apply-data-type: Apply uint8_t[256] to S-box constant
set-decompilation-comment: Document key findings in code
set-comment: Document assumptions at address level
4. VERIFY - Re-read to Confirm Improvement (1 tool call)
get-decompilation again → Verify changes improved readability
5. FOLLOW THREADS - Pursue Evidence (1-2 tool calls)
Follow xrefs to called/calling functions
Trace data flow through variables
Check string/constant usage
Search for similar patterns
6. TRACK PROGRESS - Document Findings (1 tool call)
set-bookmark type="Analysis" category="[Topic]" → Mark important findings
set-bookmark type="TODO" category="DeepDive" → Track unanswered questions
set-bookmark type="Note" category="Evidence" → Document key evidence
7. ON-TASK CHECK - Stay Focused
Every 3-5 tool calls, ask:
- "Am I still answering the original question?"
- "Is this lead productive or a distraction?"
- "Do I have enough evidence to conclude?"
- "Should I return partial results now?"
Question Type Strategies
"What does function X do?"
Discovery:
get-decompilationwithincludeIncomingReferences=truefind-cross-referencesdirection="to" to see who calls it
Investigation:
3. Identify key operations (loops, conditionals, API calls)
4. Check strings/constants referenced: get-data, read-memory
5. rename-variables based on usage patterns
6. change-variable-datatypes where evident from operations
7. set-decompilation-comment to document behavior
Synthesis: 8. Summarize function behavior with evidence 9. Return threads: "What calls this?", "What does it do with results?"
"Does this use cryptography?"
Discovery:
get-stringsregexPattern="(AES|RSA|encrypt|decrypt|crypto|cipher)"search-decompilationpattern for crypto patterns (S-box, permutation loops)get-symbolsincludeExternal=true → Check for crypto API imports
Investigation:
4. find-cross-references to crypto strings/constants
5. get-decompilation of functions referencing crypto indicators
6. Look for crypto patterns: substitution boxes, key schedules, rounds
7. read-memory at constants to check for S-boxes (0x63, 0x7c, 0x77, 0x7b...)
Improvement:
8. rename-variables: key, plaintext, ciphertext, sbox
9. apply-data-type: uint8_t[256] for S-boxes, uint32_t[60] for key schedules
10. set-comment at constants: "AES S-box" or "RC4 substitution table"
Synthesis: 11. Return: Algorithm type, mode, key size with specific evidence 12. Threads: "Where does key originate?", "What data is encrypted?"
"What is the C2 address?"
Discovery:
get-stringsregexPattern="(http|https|[0-9]+.[0-9]+.[0-9]+.[0-9]+|.com|.net|.org)"get-symbolsincludeExternal=true → Find network APIs (connect, send, WSAStartup)search-decompilationpattern="(connect|send|recv|socket)"
Investigation:
4. find-cross-references to network strings (URLs, IPs)
5. get-decompilation of network functions
6. Trace data flow from strings to network calls
7. Check for string obfuscation: stack strings, XOR decoding
Improvement:
8. rename-variables: c2_url, server_ip, port
9. set-decompilation-comment: "Connects to C2 server"
10. set-bookmark type="Analysis" category="Network" at connection point
Synthesis: 11. Return: All potential C2 indicators with evidence 12. Threads: "How is C2 address selected?", "What protocol is used?"
"Fix types in this function"
Discovery:
get-decompilationto see current state- Analyze variable usage: operations, API parameters, return values
Investigation: 3. For each unclear type, check:
- What operations? (arithmetic → int, pointer deref → pointer)
- What APIs called with it? (check API signature)
- What's returned/passed? (trace data flow)
Improvement:
4. change-variable-datatypes based on usage evidence
5. Check for structure patterns: repeated field access at fixed offsets
6. apply-structure or apply-data-type for complex types
7. set-function-prototype to fix parameter/return types
Verification:
8. get-decompilation again → Verify code makes more sense
9. Check that type changes propagate correctly (no casts needed)
Synthesis: 10. Return: List of type changes with rationale 11. Threads: "Are these structure fields correct?", "Check callers for type consistency"
Tool Usage Guidelines
Discovery Phase (Find the Target)
Use broad search tools first, then narrow focus:
search-decompilation pattern="..." → Find functions doing X
get-strings regexPattern="..." → Find strings matching pattern
get-strings searchString="..." → Find similar strings
get-functions-by-similarity searchString="..." → Find similar functions
find-cross-references location="..." direction="to" → Who references this?
Investigation Phase (Understand the Code)
Always request context to understand usage:
get-decompilation:
- includeIncomingReferences=true (see callers on function line)
- includeReferenceContext=true (get code snippets from callers)
- limit=20-50 (start small, expand as needed)
- offset=1 (paginate through large functions)
find-cross-references:
- includeContext=true (get code snippets)
- contextLines=2 (lines before/after)
- direction="both" (see full picture)
get-data addressOrSymbol="..." → Inspect data structures
read-memory addressOrSymbol="..." length=... → Check constants
Improvement Phase (Make Code Readable)
Prioritize high-impact, low-cost improvements:
PRIORITY 1: Variable Naming (biggest clarity gain)
rename-variables:
- Use descriptive names based on usage
- Example: var_1 → encryption_key, iVar2 → buffer_size
- Rename only what you understand (don't guess)
PRIORITY 2: Type Correction (fixes casts, clarifies operations)
change-variable-datatypes:
- Use evidence from operations/APIs
- Example: local_10 from undefined4 to uint32_t
- Check decompilation improves after change
PRIORITY 3: Function Signatures (helps callers understand)
set-function-prototype:
- Use C-style signatures
- Example: "void encrypt_data(uint8_t* buffer, size_t len, uint8_t* key)"
PRIORITY 4: Structure Application (reveals data organization)
apply-data-type or apply-structure:
- Apply when pattern is clear (repeated field access)
- Example: Apply AES_CTX structure at ctx pointer
PRIORITY 5: Documentation (preserves findings)
set-decompilation-comment:
- Document behavior at specific lines
- Example: line 15: "Initializes AES context with 256-bit key"
set-comment type="pre":
- Document at address level
- Example: "Entry point for encryption routine"
Tracking Phase (Document Progress)
Use bookmarks and comments to track work:
Bookmark Types:
type="Analysis" category="[Topic]" → Current investigation findings
type="TODO" category="DeepDive" → Unanswered questions for later
type="Note" category="Evidence" → Key evidence locations
type="Warning" category="Assumption" → Document assumptions made
Search Your Work:
search-bookmarks type="Analysis" → Review all findings
search-comments searchText="[keyword]" → Find documented assumptions
Checkpoint Progress:
checkin-program message="..." → Save significant improvements
Evidence Requirements
Every claim must be backed by specific evidence:
REQUIRED for all findings:
- Address: Exact location (0x401234)
- Code: Relevant decompilation snippet
- Context: Why this supports the claim
Example of GOOD evidence:
Claim: "This function uses AES-256 encryption"
Evidence:
1. String "AES-256-CBC" at 0x404010 (referenced in function)
2. S-box constant at 0x404100 (matches standard AES S-box)
3. 14-round loop at 0x401245:15 (AES-256 uses 14 rounds)
4. 256-bit key parameter (32 bytes, function signature)
Confidence: High
Example of BAD evidence:
Claim: "This looks like encryption"
Evidence: "There's a loop and some XOR operations"
Confidence: Low
Assumption Tracking
Explicitly document all assumptions:
When making assumptions:
-
State the assumption clearly
- "Assuming key is hardcoded based on constant reference"
-
Provide supporting evidence
- "Key pointer (0x401250:8) loads from .data section at 0x405000"
- "Memory at 0x405000 contains 32 constant bytes"
-
Rate confidence
- High: Strong evidence, standard pattern
- Medium: Some evidence, plausible
Content truncated.
More by cyberkaida
View all skills by cyberkaida →You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
Related MCP Servers
Browse all serversUnlock seamless Figma to code: streamline Figma to HTML with Framelink MCP Server for fast, accurate design-to-code work
Split OpenAPI specification files into focused, manageable parts while preserving references for better documentation an
Boost your AI code assistant with Context7: inject real-time API documentation from OpenAPI specification sources into y
Use any LLM for deep research. Performs multi-step web search, content analysis, and synthesis for comprehensive researc
Structured spec-driven development workflow for AI-assisted software development. Creates detailed specifications before
Effortlessly create 25+ chart types with MCP Server Chart. Visualize complex datasets using TypeScript and AntV for powe
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.