Hi everyone,
I made nso2elf, a Python alternative to nx2elf, after encountering this error with a newer NSO:
The affected file used ZBIC compression, so the existing LZ4 decoder could not handle it. This tool supports both older LZ4-compressed NSOs and newer ZBIC-compressed NSOs, as well as uncompressed segments.
Features
Requires Python 3.10 or newer:
This creates main.elf. To choose an output path:
LZ4 support uses only the Python standard library. For ZBIC support, install the optional dependency:
The converter has been checked against real LZ4 and ZBIC samples. All 20 automated tests pass on Windows and Linux with Python 3.10 and 3.12.
The output is intended for static analysis; relocations are preserved but are not applied. Unity, Unreal Engine, and Godot identification is planned for a future update.
Bug reports and compatibility feedback are welcome!
I made nso2elf, a Python alternative to nx2elf, after encountering this error with a newer NSO:
Members only
Features
- Converts ARM64 NSO files into ELF files for analysis.
- Preserves segment addresses, permissions, BSS, and available NX metadata.
- Exposes dynamic symbols, relocation tables, MOD0, and supported unwind metadata.
- Reports the NSO Build ID and locates matching embedded GNU Build ID notes.
- Prints segment information and SHA-256 digests in a format similar to nx2elf.
- Can also export an uncompressed NSO.
Requires Python 3.10 or newer:
Members only
Members only
LZ4 support uses only the Python standard library. For ZBIC support, install the optional dependency:
Members only
The converter has been checked against real LZ4 and ZBIC samples. All 20 automated tests pass on Windows and Linux with Python 3.10 and 3.12.
The output is intended for static analysis; relocations are preserved but are not applied. Unity, Unreal Engine, and Godot identification is planned for a future update.
Bug reports and compatibility feedback are welcome!










