Beste medetweakers,
Afgelopen week heb ik een paar GPS ontvangers gekocht, namelijk de U-Blox NEO-M8N. Deze ondersteunde met softwareversie 2.01 onofficieel een aantal commando's, die in 3.01 weggehaald zijn. Daarom ben ik van plan de software op deze GPS ontvangers te downgraden.
De modules hebben zowel een ROM als een flashgeheugen. In beiden kunnen firmwares opgeslagen worden. Schijnbaar krijgen veel mensen een module geleverd met ROM firmware 2.01 en versie 3.01 op het flashgeheugen. De bootloader besluit dan schijnbaar om versie 3.01 in te laden. Wanneer je dit flash overschrijft met de oude versie, kan deze ook niets anders meer dan 2.01 inladen.
Tot nu toe lees ik op het internet alleen mensen die zonder problemen versie 2.01 konden flashen. Echter, ik heb nu een module waarbij ook versie 3.01 in het ROM staat. Als ik nu versie 2.01 op het flash flash, blijft de module versie 3.01 van het ROM inladen. Dus, ik wil versie 2.01 graag zo aanpassen qua versienummer, dat de bootloader denkt dat hij een nieuwere versie op zn flash heeft. Althans, dat is mijn idee. Het is het vermelden waard dat ik 0 echte hackervaring heb, ik kon tot nu altijd dingen googelen
Daarom ben ik een beetje bang hem te bricken als ik maar wat aankloot.
Maar oke, ik heb dus beide firmwares gedownload, en geopend in een hex editor. Op de eerste regel is een deeltje vergelijkbaar:
Waarbij 55 42 58 38 in ANSI staat voor UBX8, een afkorting van het merk U-blox. Maar, zoals je ziet zijn er twee bytes anders in de eerste 16 bytes. Zouden jullie gewoon op de gok dit getal ophogen in de eerste versie?
Ook zijn er in beide versies ANSI strings te vinden met daarin het versienummer. Deze heb ik al opgehoogd, maar ik denk niet dat een bootloader hiernaar kijkt?
Dan als laatste heb ik nog een iteratienummer (lijkt het), die achter het versienummer in de strings staat, omgezet in hex en gezocht in de blob. Deze lijkt ook een keer voor te komen. Dit is echter vrij ver het bestand in, zeg 400/500 kB. Zou deze op de gok ophogen ook een goed idee zijn?
Of is het slimmer om zoiets te gaan deassembleren? Ook dat heb ik verder nog nooit gedaan.
Hier zijn de twee images:
https://www.dropbox.com/s...blox%20firmwares.zip?dl=0
In de bestandsnaam staat de md5-hash van het bestand, dit lijkt de flasher te gebruiken als verificatie.
Wat denken jullie hiervan?
Afgelopen week heb ik een paar GPS ontvangers gekocht, namelijk de U-Blox NEO-M8N. Deze ondersteunde met softwareversie 2.01 onofficieel een aantal commando's, die in 3.01 weggehaald zijn. Daarom ben ik van plan de software op deze GPS ontvangers te downgraden.
De modules hebben zowel een ROM als een flashgeheugen. In beiden kunnen firmwares opgeslagen worden. Schijnbaar krijgen veel mensen een module geleverd met ROM firmware 2.01 en versie 3.01 op het flashgeheugen. De bootloader besluit dan schijnbaar om versie 3.01 in te laden. Wanneer je dit flash overschrijft met de oude versie, kan deze ook niets anders meer dan 2.01 inladen.
Tot nu toe lees ik op het internet alleen mensen die zonder problemen versie 2.01 konden flashen. Echter, ik heb nu een module waarbij ook versie 3.01 in het ROM staat. Als ik nu versie 2.01 op het flash flash, blijft de module versie 3.01 van het ROM inladen. Dus, ik wil versie 2.01 graag zo aanpassen qua versienummer, dat de bootloader denkt dat hij een nieuwere versie op zn flash heeft. Althans, dat is mijn idee. Het is het vermelden waard dat ik 0 echte hackervaring heb, ik kon tot nu altijd dingen googelen
Maar oke, ik heb dus beide firmwares gedownload, en geopend in een hex editor. Op de eerste regel is een deeltje vergelijkbaar:
code:
1
2
| 55 42 58 38 00 10 87 00 ff ff ff ff 00 00 80 00 -- Versie 2.01 55 42 58 38 e0 5d 87 00 ff ff ff ff 00 00 80 00 -- Versie 3.01 |
Waarbij 55 42 58 38 in ANSI staat voor UBX8, een afkorting van het merk U-blox. Maar, zoals je ziet zijn er twee bytes anders in de eerste 16 bytes. Zouden jullie gewoon op de gok dit getal ophogen in de eerste versie?
Ook zijn er in beide versies ANSI strings te vinden met daarin het versienummer. Deze heb ik al opgehoogd, maar ik denk niet dat een bootloader hiernaar kijkt?
Dan als laatste heb ik nog een iteratienummer (lijkt het), die achter het versienummer in de strings staat, omgezet in hex en gezocht in de blob. Deze lijkt ook een keer voor te komen. Dit is echter vrij ver het bestand in, zeg 400/500 kB. Zou deze op de gok ophogen ook een goed idee zijn?
Of is het slimmer om zoiets te gaan deassembleren? Ook dat heb ik verder nog nooit gedaan.
Hier zijn de twee images:
https://www.dropbox.com/s...blox%20firmwares.zip?dl=0
In de bestandsnaam staat de md5-hash van het bestand, dit lijkt de flasher te gebruiken als verificatie.
Wat denken jullie hiervan?