View Single Post
Old 06-15-2024, 09:39 AM   #1139
bopuc
livin' with ebooks
bopuc understands when you whisper 'The dog barks at midnight.'bopuc understands when you whisper 'The dog barks at midnight.'bopuc understands when you whisper 'The dog barks at midnight.'bopuc understands when you whisper 'The dog barks at midnight.'bopuc understands when you whisper 'The dog barks at midnight.'bopuc understands when you whisper 'The dog barks at midnight.'bopuc understands when you whisper 'The dog barks at midnight.'bopuc understands when you whisper 'The dog barks at midnight.'bopuc understands when you whisper 'The dog barks at midnight.'bopuc understands when you whisper 'The dog barks at midnight.'bopuc understands when you whisper 'The dog barks at midnight.'
 
bopuc's Avatar
 
Posts: 36
Karma: 42048
Join Date: Jun 2014
Location: Berlin (DE), winters in Aomori (JP), from Montréal (CA)
Device: Libra2, KOA
Quote:
Originally Posted by Aleron Ives View Post
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!
bopuc is offline   Reply With Quote