Cesta do hlubin TT One New část 1.
Napsal: 10.7.2007, 19:31
Zkusme se podívat trošku do hloubky, jak fungují softwarová "střeva" TomTomu.
Když se podíváme na filesystém paměťové karty (harddisku) TomToma první co zaujme je soubor ttsystem. Co v něm
může být? Jako první přijde obhlídka "očima". Soubor má jakýsi podpis "TTBL", dále vypadá alespoň opticky jako
komprimovaný nebo přinejmenším encodovaný. Když si nechám v souboru vyhledat "human-readable" znaky, naleznu
následující sekci :
V ní jsou černě označeny čitelné řetězce, v nichž mně obzvláště zaujmou (žlutě vyznačené) řetězce GZIP
(komprimační algoritmus) a Linux. Taky si nemůžu nevšimnout, že modře proškrtaná sekce je zjevně
nekomprimovaná, kdežto ta proškrtaná červeně komprimovaná je. Dojdu k závěru že jsem našel extractor
jakési linuxovské kernel image fungující jako bootloader.
Extractor je zřejmě volán přímo z firmware TomToma, kde je na něj po provedení základních operací
(rozchození USB, SD storage atp.) předáno řízení. Další analýza řetězců v souboru ukáže, že TomTom má inicializační
ramdisk. Celkově to tedy funguje tak, že firmware předá řízení do místa soubor ttsystem, kde je extractor a ten
rozbalí image do ramdisku, odkud je pak spuštěna.
Nyní jak rozbalit to, co rozbaluje extractor. Pokud je image komprimovaná GZIPem, o čemž svědčí nalezený řetězec,
potom bude zkomprimovaná sekce začínat hex. podpisem 1F 8B. Takovéto místo skutečně bezprostředně za textovými
řetězci nacházím a image rozbaluji. Vypadne mi následující struktura adresářů:
Když adresáře začnu analyzovat, vypadnou mi následující zajímavosti:
- ramdisk obsahuje mini-linux založený na BusyBoxu, což je jakási knihovna drobných utilit.
- také navigační software, v adresáři /bin/ttn je uložen v ramdisku
- inicializační skript /etc/rc umožňuje vyvolat ladící mód TomToma se shellem...
(ukázka skriptu)
echo "* Starting ${product}"
if test -f ${debugf}
then
${ttnapp} > /dev/console 2>&1 &
echo "* Starting shell"
sh
else
${ttnapp} > /dev/null 2>&1 &
fi
- zkompilované image jsou ELFovské image pro ARMovské procesory
Za použití vhodného disassembleru pro ARMy, například IDA se otevírá cesta podívat se, jak má TomTom udělaná
některá mimořádně zajímavá místa, například validaci aktivačního kódu, ale o tom někdy příště, manželka
už je naštvaná, že pořád sedím u počítače ...
(algoritmus nebude zveřejněn)
Když se podíváme na filesystém paměťové karty (harddisku) TomToma první co zaujme je soubor ttsystem. Co v něm
může být? Jako první přijde obhlídka "očima". Soubor má jakýsi podpis "TTBL", dále vypadá alespoň opticky jako
komprimovaný nebo přinejmenším encodovaný. Když si nechám v souboru vyhledat "human-readable" znaky, naleznu
následující sekci :
V ní jsou černě označeny čitelné řetězce, v nichž mně obzvláště zaujmou (žlutě vyznačené) řetězce GZIP
(komprimační algoritmus) a Linux. Taky si nemůžu nevšimnout, že modře proškrtaná sekce je zjevně
nekomprimovaná, kdežto ta proškrtaná červeně komprimovaná je. Dojdu k závěru že jsem našel extractor
jakési linuxovské kernel image fungující jako bootloader.
Extractor je zřejmě volán přímo z firmware TomToma, kde je na něj po provedení základních operací
(rozchození USB, SD storage atp.) předáno řízení. Další analýza řetězců v souboru ukáže, že TomTom má inicializační
ramdisk. Celkově to tedy funguje tak, že firmware předá řízení do místa soubor ttsystem, kde je extractor a ten
rozbalí image do ramdisku, odkud je pak spuštěna.
Nyní jak rozbalit to, co rozbaluje extractor. Pokud je image komprimovaná GZIPem, o čemž svědčí nalezený řetězec,
potom bude zkomprimovaná sekce začínat hex. podpisem 1F 8B. Takovéto místo skutečně bezprostředně za textovými
řetězci nacházím a image rozbaluji. Vypadne mi následující struktura adresářů:
Když adresáře začnu analyzovat, vypadnou mi následující zajímavosti:
- ramdisk obsahuje mini-linux založený na BusyBoxu, což je jakási knihovna drobných utilit.
- také navigační software, v adresáři /bin/ttn je uložen v ramdisku
- inicializační skript /etc/rc umožňuje vyvolat ladící mód TomToma se shellem...
(ukázka skriptu)
echo "* Starting ${product}"
if test -f ${debugf}
then
${ttnapp} > /dev/console 2>&1 &
echo "* Starting shell"
sh
else
${ttnapp} > /dev/null 2>&1 &
fi
- zkompilované image jsou ELFovské image pro ARMovské procesory
Za použití vhodného disassembleru pro ARMy, například IDA se otevírá cesta podívat se, jak má TomTom udělaná
některá mimořádně zajímavá místa, například validaci aktivačního kódu, ale o tom někdy příště, manželka
už je naštvaná, že pořád sedím u počítače ...
(algoritmus nebude zveřejněn)