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.
What this skill does
# 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:** 1. `get-decompilation` with `includeIncomingReferences=true` 2. `find-cross-references` direction="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:** 1. `get-strings` regexPattern="(AES|RSA|encrypt|decrypt|crypto|cipher)" 2. `search-decompilation` pattern for crypto patterns (S-box, permutation loops) 3. `get-symbols` includeExternal=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:** 1. `get-strings` regexPattern="(http|https|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|\.com|\.net|\.org)" 2. `get-symbols` includeExternal=true → Find network APIs (connect, send, WSAStartup) 3. `search-decompilation` pattern="(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:** 1. `get-decompilation` to see current state 2. 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
Related in Code Review
gstack
IncludedFast headless browser for QA testing and site dogfooding. Navigate pages, interact with elements, verify state, diff before/after, take annotated screenshots, test responsive layouts, forms, uploads, dialogs, and capture bug evidence. Use when asked to open or test a site, verify a deployment, dogfood a user flow, or file a bug with screenshots. (gstack)
startup-due-diligence
IncludedLegal due diligence review for seed-stage and Series A startups (US, Delaware C-Corp focus). Supports both investor and founder perspectives. Capabilities include: (1) Interactive document review and issue spotting; (2) Document request list generation; (3) Cap table and SAFE/convertible note analysis; (4) Red flag identification with severity ratings; (5) Diligence report generation. TRIGGERS: due diligence, DD, startup investment, cap table review, Series A, seed round, investor diligence, legal review startup, SAFE analysis, convertible note, 409A, founder vesting.
interview-master
IncludedThis skill should be used when the user asks to "generate interview questions", "prepare for interview", "optimize resume", "conduct mock interview", "analyze git commits for resume", "generate resume from code", "review my resume", or mentions interview preparation, career assistance, or extracting project experience from git history. Provides comprehensive interview and career development guidance for both job seekers and interviewers.
fix-issue
IncludedFixes GitHub issues using parallel analysis agents for root cause investigation, code exploration, and regression detection. Reads issue context from gh CLI, searches codebase and memory for related patterns, generates a fix with tests, and links the resolution back to the issue via PR. Includes prevention analysis to avoid recurrence. Use when debugging errors, resolving regressions, fixing bugs, or triaging issues.
sf-apex
IncludedGenerates and reviews Salesforce Apex code with 150-point scoring. TRIGGER when: user writes, reviews, or fixes Apex classes, triggers, test classes, batch/queueable/schedulable jobs, or touches .cls/.trigger files. DO NOT TRIGGER when: LWC JavaScript (use sf-lwc), Flow XML (use sf-flow), SOQL-only queries (use sf-soql), or non-Salesforce code.
swift-development
IncludedComprehensive Swift development for building, testing, and deploying iOS/macOS applications. Use when Claude needs to: (1) Build Swift packages or Xcode projects from command line, (2) Run tests with XCTest or Swift Testing framework, (3) Manage iOS simulators with simctl, (4) Handle code signing, provisioning profiles, and app distribution, (5) Format or lint Swift code with SwiftFormat/SwiftLint, (6) Work with Swift Package Manager (SPM), (7) Implement Swift 6 concurrency patterns (async/await, actors, Sendable), (8) Create SwiftUI views with MVVM architecture, (9) Set up Core Data or SwiftData persistence, or any other Swift/iOS/macOS development tasks.