Quote:
Originally Posted by Aleron Ives
The QSS patches are part of nickel.yaml, which targets the file /usr/local/Kobo/nickel, which appears to be the ELF binary containing the ARM assembly for the Nickel OS. The QSS patches are using "FindZlib", which probably means that the QSS files are zipped before they are compiled into the binary; as such, you can't simply search for the strings you want to replace. You need to extract the zip contents, unzip it, edit the files, rezip them, and insert the modified zip into the ELF, ensuring that the new zip is not larger than the original one.
If you're serious about making patches, you could use Ghidra's ARM module to decompile Nickel and learn how things work, so you can start editing the binary and its associated libraries.
|
Thank you.
How precisely (
I am looking for guidance here) did whoever made the existing patches in `nickel.yaml` figure out what strings of qss to find & replace in the firmware, e.g.:
Code:
{Find: "line-height: 1.35em;", Replace: "line-height: 1.3em;"}
My understanding is that KoboPatch does the "heavy lifting" of actually patching the firmware based on the configuration (and search/replace strings) in the YAML files. Somehow, we (patcher makers) need to be able to "see" what we searching for to replace it, right? How do I "get to seeing"?
I have unzipped the firmware bundle, TarUnzipped the "KoboRoot.tgz" contained within, and poked around in various bin files in
/usr/local/Kobo with
readelf but that's not showing me anything I can recognize. Maybe I'm not using the right flags?
Any and all pointers much appreciated!