mcghidra/CHANGELOG.md
Teal Bauer 28870e9b54 feat: Improve data manipulation API
- Add comprehensive data manipulation capabilities
- Implement separate pathways for rename-only, type-only, and combined operations
- Fix HTTP request body consumption issue in DataEndpoints
- Standardize on 'type' parameter name instead of 'dataType'
- Add thorough test coverage with dedicated test_data_update.py script
- Update API documentation to version 2 with full endpoint descriptions
- Update CHANGELOG with detailed information about data manipulation features
2025-04-14 19:24:14 +02:00

6.3 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

Unreleased

Added

  • Complete Ghidra HTTP API implementation:
    • Memory operations (read/write)
    • Cross-reference analysis
    • Program analysis (callgraph, dataflow)
  • Enhanced decompiler controls:
    • Raw output vs clean pseudocode
    • Syntax tree visibility
    • Multiple simplification styles
  • Comprehensive API documentation (GHIDRA_HTTP_API.md, MCP_BRIDGE_API.md)
  • Standardized JSON response formats
  • Implemented /plugin-version endpoint for version checking
  • Added proper error handling for when no program is loaded
  • Implemented HATEOAS-driven API as described in GHIDRA_HTTP_API.md:
    • Added /programs and /programs/{program_id} endpoints
    • Implemented program-specific resource endpoints
    • Added pagination support with metadata
    • Added filtering capabilities (by name, address, etc.)
    • Implemented proper resource linking with HATEOAS
  • Added disassembly endpoint for functions with HATEOAS links
  • Enhanced parameter validation in MCP bridge tools
  • Added comprehensive data manipulation capabilities:
    • Data renaming (changing only the name)
    • Data type setting (changing only the type)
    • Combined data update operations (changing both name and type)
    • Dedicated /data/type and /data/update endpoints
    • Standalone test script for data operations

Changed

  • Unified all endpoints to use structured JSON
  • Improved error handling and response metadata
  • Simplified bridge code and added type hints
  • Updated port discovery to use DEFAULT_GHIDRA_PORT
  • Refactored Java plugin into modular architecture:
    • Separated concerns into api, endpoints, util, and model packages
    • Created standardized response builders and error handlers
    • Implemented transaction management helpers
    • Added model classes for structured data representation
  • Removed port field from responses (bridge knows what instance it called)
  • Updated MCP bridge to use new HATEOAS API endpoints
  • Enhanced MCP bridge tools to validate input parameters
  • Improved response handling in MCP bridge for better error reporting
  • Breaking: Removed backward compatibility with legacy endpoints, all endpoints now require strict HATEOAS compliance:
    • All responses must include _links object with at least self reference
    • Standardized JSON structures for all resource types
    • Created comprehensive requirements documentation in HATEOAS_API.md
  • Updated API documentation to version 2 with comprehensive endpoint descriptions

Fixed

  • Fixed endpoint registration in refactored code (all endpoints now working)
  • Improved handling of program-dependent endpoints when no program is loaded
  • Enhanced root endpoint to dynamically include links to available endpoints
  • Added proper HATEOAS links to all endpoints
  • Fixed URL encoding/decoding issues in program IDs
  • Fixed transaction management in function operations
  • Fixed inconsistent response formats in function-related endpoints
  • Improved error handling for missing parameters in MCP bridge tools
  • Fixed non-compliant endpoint responses:
    • Added _links to /classes and /instances endpoints
    • Updated /programs/current/segments to return list of segment objects
    • Fixed decompile endpoint to return structured decompiled code
    • Fixed disassembly endpoint to return structured instruction list
    • Fixed variables endpoint to return proper variable structure
  • Fixed data manipulation operations:
    • Resolved HTTP request body consumption issue
    • Fixed parameter naming inconsistency between "dataType" and "type"
    • Improved preservation of names during data type changes
    • Enhanced error handling for data operations

1.4.0 - 2025-04-08

Added

  • Structured JSON communication between Python bridge and Java plugin
  • Consistent response format with metadata (timestamp, port, instance type)
  • Comprehensive test suites for HTTP API and MCP bridge
  • Test runner script for easy test execution
  • Detailed testing documentation in TESTING.md
  • Origin checking for API requests
  • Mutating tests for API functionality

Changed

  • Improved error handling in API responses
  • Enhanced JSON parsing in the Java plugin
  • Updated documentation with JSON communication details
  • Standardized API responses across all endpoints
  • Improved version handling in build system

Fixed

  • Build complete package in package phase
  • Versioning and naming of JAR files
  • GitHub Actions workflow permissions
  • Extension ZIP inclusion in complete package
  • ProgramManager requirement
  • Git tag fetching functionality
  • MCP bridge test failures

1.3.0 - 2025-04-02

Added

  • Added docstrings for all @mcp.tool functions
  • Variable manipulation tools (rename/retype variables)
  • New endpoints for function variable management
  • Dynamic version output in API responses
  • Enhanced function analysis capabilities
  • Support for searching variables by name
  • New tools for working with function variables:
    • get_function_by_address
    • get_current_address
    • get_current_function
    • decompile_function_by_address
    • disassemble_function
    • set_decompiler_comment
    • set_disassembly_comment
    • rename_local_variable
    • rename_function_by_address
    • set_function_prototype
    • set_local_variable_type

Changed

  • Improved version handling in build system
  • Reorganized imports in bridge_mcp_hydra.py
  • Updated MANIFEST.MF with more detailed description

1.2 - 2025-03-30

Added

  • Enhanced function analysis capabilities
  • Additional variable manipulation tools
  • Support for multiple Ghidra instances

Changed

  • Improved error handling in API calls
  • Optimized performance for large binaries

1.1 - 2025-03-30

Added

  • Initial release of GhydraMCP bridge
  • Basic Ghidra instance management tools
  • Function analysis tools
  • Variable manipulation tools

1.0 - 2025-03-24

Added

  • Initial project setup
  • Basic MCP bridge functionality