XeXe is a desktop type-inspection tool for ELF binaries with MIPS/ECOFF .mdebug debug information. It parses debug type metadata, presents discovered types in a searchable list, and renders selected types as read-only pseudo-C++ with syntax highlighting.
The current focus is PlayStation 2-era GCC/STABS/ECOFF debug data, including structures, unions, enums, typedefs, arrays, member fields, static fields, member functions, virtual functions, and inheritance.
- ELF loading with
.mdebug/ ECOFF symbol table support. - STABS type import through the vendored Chaos Compiler Collection (
ccc). - Type list with filtering/search support.
- Right-side type detail view with:
- basic metadata: name, kind, size in hexadecimal bytes;
- generated pseudo-C++ representation;
- C++ syntax highlighting;
- read-only selectable code text;
- display options for static fields, access specifiers, regular methods, and virtual methods.
- Pseudo-C++ generation for:
- enums;
- structs/unions;
- inheritance declarations;
- instance and static fields;
- regular, static, and virtual member methods;
- typedefs, arrays, pointers, and references.
- Built-in MCP (Model Context Protocol) server over HTTP for external tooling:
- start/stop from the
MCPtoolbar button, configurable host/port and optional bearer token; - tools:
search_types,search_globals,search_functions,find_global_by_address,find_globals_by_type.
- start/stop from the
- Language: C++20
- UI: Qt 6 Quick / QML / Qt Quick Controls 2
- Build system: CMake
- Concurrency: Qt Concurrent
- Debug type parsing: vendored Chaos Compiler Collection (
third_party/ccc) - Target debug formats: ELF, MIPS/ECOFF
.mdebug, STABS - Platform used during development: Windows / MSVC / Qt 6.7
qml/ QML user interface
src/core/ Reusable core: ELF loading, type import, C++ generation
src/models/ Qt list model for types
src/viewmodels/ UI-facing application state and async analysis
src/mcp/ MCP server: HTTP transport and JSON-RPC tool handlers
third_party/ccc/ Vendored Chaos Compiler Collection, MIT licensed
rnd/ Ignored local reverse-engineering experiments
Examples/ Ignored local sample binaries/dumps
Requirements:
- CMake 3.20 or newer
- C++20-capable compiler
- Qt 6.7 or newer with
Quick,QuickControls2, andConcurrent
Example:
cmake -S . -B build
cmake --build build --config ReleaseOn Windows, the build deploys Qt runtime dependencies for the produced executable via the configured Qt deployment tooling.
The reusable parsing and pseudo-C++ generation layer is built as the xexe_core static library. The Qt application links against that library and keeps UI-specific pieces, such as QML models and syntax highlighting, in the application layer.
- Launch
XeXe. - Open an ELF file containing MIPS/ECOFF
.mdebuginformation. - Select a type from the left-hand list.
- Inspect metadata and generated pseudo-C++ in the right-hand panel.
- Use the
Optionspanel above the code view to toggle generated output details.
- Click the
MCPbutton in the toolbar (it turns green while the server is running). - Configure host (default
127.0.0.1), port (default12555) and an optional access token. Usemake randomto generate a token with thexexemcp-prefix. When the token is empty, no authorization is required; otherwise clients must sendAuthorization: Bearer <token>. - Press
Runto start the server,Stopto shut it down. If the port is busy, an error message box is shown.
The endpoint is http://<host>:<port>/mcp (Streamable HTTP transport, JSON-RPC 2.0).
Supported methods: initialize, ping, tools/list, tools/call.
This project vendors parts of Chaos Compiler Collection (ccc) under third_party/ccc.
ccc is licensed under the MIT License and is used for robust parsing of MIPS/ECOFF .mdebug and STABS debug type information. See THIRD_PARTY_NOTICES.md and third_party/ccc/License.txt for details.
The main XeXe project code is proprietary and all rights are reserved unless a separate written license agreement says otherwise. See LICENSE.
Third-party components remain under their respective licenses.