Ofrak Jun 2026
The core logic lives in components that register for specific resource types. An analyzer might say, "I recognize this as a gzip stream," and then decompress it, creating a new child resource. A modifier might say, "I can patch the version string in this ELF's .rodata section." Because components are decoupled, you can write your own Python-based analyzer for a custom compression algorithm and drop it into the pipeline.
# Repack the firmware await root_resource.pack() await root_resource.save("modified_firmware.bin") The core logic lives in components that register