Implement parsing for all 15 optional header types found in XEX2 files: inline values (entry point, base address, stack size, system flags), fixed-size structures (execution info, file format, TLS, game ratings, LAN key, checksum/timestamp), and variable-size structures (static libraries, import libraries, resource info, original PE name, Xbox 360 logo). Add comprehensive unit and integration tests. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
70 lines
1.3 KiB
Markdown
70 lines
1.3 KiB
Markdown
# xex2tractor
|
|
|
|
A tool for extracting and inspecting Xbox 360 XEX2 executable files, written in Rust.
|
|
|
|
## Usage
|
|
|
|
```sh
|
|
xex2tractor <file.xex>
|
|
```
|
|
|
|
### Example Output
|
|
|
|
```
|
|
=== XEX2 Header ===
|
|
Magic: XEX2 (0x58455832)
|
|
Module Flags: 0x00000001 [TITLE]
|
|
Header Size: 0x00003000 (12288 bytes)
|
|
Reserved: 0x00000000
|
|
Security Offset: 0x00000090
|
|
Header Count: 15
|
|
|
|
=== Optional Headers (15 entries) ===
|
|
|
|
[ENTRY_POINT] 0x824AB748
|
|
[IMAGE_BASE_ADDRESS] 0x82000000
|
|
[DEFAULT_STACK_SIZE] 0x00080000 (524288 bytes)
|
|
[SYSTEM_FLAGS] 0x00000400 [PAL50_INCOMPATIBLE]
|
|
|
|
[EXECUTION_INFO]
|
|
Media ID: 0x2D2E2EEB
|
|
Title ID: 0x535107D4
|
|
Version: 0.0.0.2
|
|
...
|
|
|
|
[FILE_FORMAT_INFO]
|
|
Encryption: Normal (AES-128-CBC)
|
|
Compression: Normal (LZX)
|
|
|
|
[STATIC_LIBRARIES] (12 libraries)
|
|
XAPILIB 2.0.3215.0 (Unknown(64))
|
|
D3D9 2.0.3215.1 (Unknown(64))
|
|
...
|
|
|
|
[IMPORT_LIBRARIES] (2 libraries)
|
|
xam.xex v2.0.4552.0 (min v2.0.4552.0) - 104 imports
|
|
xboxkrnl.exe v2.0.4552.0 (min v2.0.4552.0) - 294 imports
|
|
```
|
|
|
|
## Building
|
|
|
|
```sh
|
|
cargo build --release
|
|
```
|
|
|
|
## Testing
|
|
|
|
Place a sample XEX2 file at `tests/data/default.xex`, then run:
|
|
|
|
```sh
|
|
cargo test
|
|
```
|
|
|
|
## Documentation
|
|
|
|
See [doc/xex2_format.md](doc/xex2_format.md) for the XEX2 file format specification.
|
|
|
|
## License
|
|
|
|
This project is licensed under the MIT License. See [LICENSE](LICENSE) for details.
|