Hirdetés

Új hozzászólás Aktív témák

  • Karma

    félisten

    válasz animoo #551 üzenetére

    Nos... Megpróbálom valahogy összeszedni azt a keveset amit tudok a dologról. Valószínűleg igen unalmas lesz, amiért nem vállalok felelősséget :P

    A HTC telefonok mindig egységesen működnek, ha a bootolásról van szó. Már a kezdetek óta van egy PPL (Primary Program Loader), ami a bekapcsoláskor indul be, a feladata az SPL (Secondary Program Loader) betöltése. Ez utóbbitól (amit bootloadernek is becéznek az androidos eszközökön) kezd érdekesebbé válni a dolog.

    Az SPL a mi szemszögünkből három dologra jó (vannak plusz dolgok, amiket nem ismerek, pl. a HBOOT): 1) Be tudja tölteni a boot partícióról a Linux kernelt, ami aztán megy tovább és éleszti a teljes Androidot. 2) Ha a júzer nyomja a megfelelő billentyűt, vagy korábban explicite ezt a parancsot kapta a telefon, akkor a recovery partíción lévő rendszert indítja el. 3) Másik billentyű/parancskombinációval pedig a saját belső menüjét hozza be, ahol a fastboot, HBOOT, NBH flashelést lehet elérni.

    Ezzel nem mondtam még újat, úgyhogy egy kicsi húst is rakok a csontra. A legnagyobb probléma minden módosítással az aláírás-ellenőrzés, ami több helyen is előkerül.

    a) A bolti forgalomba kerülő HTC telefonok nagy részének olyan SPL-je van, ami vagy egyáltalán tartalmaz semmi extra funkciót az NBH flashen kívül (három színes csíkos SPL), vagy van benne fastboot, de nem engedi tetszőleges házi partíciók felflashelését a telefonra, mivel nem rendelkeznek a HTC kriptográfiai aláírásával. Kivételt képez az összes fejlesztői telefon - az ADP1 és ADP2 nem végez ellenőrzést, a Nexus One-on pedig ki lehet kapcsolni a fastboot oem unlock paranccsal -, nomeg pár nem-végleges szoftverrel kiadott G1. Ennek megkerülésére szolgál a HardSPL, amihez saját recovery partíció kell, ld. következő pont.

    b) A gyári recovery menü leellenőrzi az update.zip-eket, hogy rendben vannak-e és a HTC-től jöttek-e. Ez macera, mert bár bármelyik partíciót, a rádiót és az SPL-t is felül tudná írni, mégse fogja, hiszen házilag nem lehet ilyen aláírást generálni. Bár vannak érdekes megoldások pl. a Motorolánál. Itt jön be a képbe az, hogy ha saját recovery-t tudsz futtatni, például a SuperBootot az N1-en, vagy az Amon Ra recovery-t G1-en, Hero-n, stb., akkor az kihagyja a fölösleges ellenőrzéseket, és flashelhetsz. Csak ugye ahhoz először ezt be kell indítani, aminek az egyik módja a fastboot boot, ami csíkos SPL-lel lehetetlen (és egyébként is azt vettem észre, hogy már itt is aláírásellenőrzés van az új hardvereken, úgyhogy nem működik többé), a másik pedig egy szinttel feljebb menni.

    c) Mivel se a fastboot, se a recovery nem hajlandó házi cuccokat flashelni, marad a harmadik láncszem: a Linux, és a terminálból elérhető flash_image parancs. Ehhez meg root jogosultságokra van szükség, hiszen nem szerencsés, ha a mezei júzer felülírogatja a partíciókat...

    Kitérőként pár szó magáról a rootolásról. Ahhoz, hogy legyenek root jogok a telefonon, egy dologra van szükség: ki kell cserélni a csak olvasható system partíción egy fájlt, a su-t, mivel alaphelyzetben ki van herélve, a munkájának elvégzése helyett csak elutasító választ ad. A módosított verzió ezzel szemben felhasználót vált, ahogy egy normális Linuxon is történik. Emellé jár a SuperUser.apk, ami egy szép kérdést is feltesz, ha valaki root akarna lenni, de ez csak hab a tortán.

    A probléma elég egyértelmű, az írhatóvá tételhez rootnak kell lenni, kisebb 22-es csapdája. Korábban voltak exploitok, amikkel el lehetett érni, hogy ideiglenesen root jogosultságot kapjon egy processz - egy telnet szerver a legősibb G1-eken, később egy Linux kernel exploiton keresztül a FlashRec, majd innentől elvesztettem a fonalat, amikor HD2-re váltottam -, de a lényeg változatlan: sebezhetőség kell, ha az ember rootot akar.

    Akkor most egy kicsit a teljes képről, összefoglalóként, ha főzött ROM-ot akar az ember telepíteni. Van egy pár lehetséges sorrend.

    1) Root megszerzése -> Recovery flash -> házi ROM flash (recovery-ből).
    2) Root megszerzése -> Recovery flash -> SPL flash -> házi ROM (fastboot).
    3) (Csak N1!) SPL feloldása -> Recovery flash (fastboot) -> házi ROM (fb/rec).
    4) (Csak N1!) SPL feloldása -> házi ROM (fastboot).

    Más sorrend elvileg nem lehetséges HTC-nél. Ha nem felejtettem el valamit...

    És zárásnak két érdekesség. A Modaco-s Paul rootolta már a Desire-t és a Legendet, de azt írta, hogy nem kapott írásjogot a memória felett. Én ezt úgy értelmeztem (nem túlozta el a magyarázatot), hogy bár a rootjog megvan (pl. fut a MarketEnabler és a többi ilyen móka), de a flash_image nem hajlandó így se felülírni semmit. Más szóval a HTC bekeményítette a védelmet. Sajnos az N1-nek semmi köze a Desire-höz ebből a szempontból.

    A másik érdekes meg a Motorola Milestone esete, ahol az aláírás-ellenőrzést nem a flashelésnél, hanem futásidőben végzik. Tehát a bootloader leellenőrzi, hogy a recovery és boot partíciók érintetlenek-e, mert ha nem, akkor nem indítja el a telefont… Ezzel likvidálva a főzött ROM-okat 100%-ban.

    Huh, két óra mínusz. Nem tudom kihagytam-e valamit, ezt most elküldöm, hogy ne vesszen el :)

    [ Szerkesztve ]

    “All nothings are not equal.”

Új hozzászólás Aktív témák