-
[Translated by Markus Kallatsa (KYBS2001 course assignment at JYU.FI)]
-
Minut onkin jo esitelty
-
Nimeni on Stefan Widmann
-
ja varmaan voin näyttää diaesitykseni?
-
Hei, diat?
-
naurua
-
Olen VGA:lla siinä.
-
huminaa
-
Niin...
-
[mutinaa]
-
Okei, sen aikaa kun odottelemme, että diani ilmestyvät jotenkin
-
Kuka on nähnyt uskomattoman puheen
-
Ciscon VoIP-puhelimien hakkeroinnista viime vuonna
-
joko livenä tai videolta?
-
Okei, jotkut teistä.
-
Kun mietimme tätä puhetta
-
Ciscon VoIP-puhelimissa on sulautettu
-
Linux-käyttöjärjestelmä, mutta niiden ei ainoastaan
-
tarvitse toimia Linux-käyttöjärjestelmän kanssa, vaan lisäksi
-
DSP:n laiteohjelmiston kanssa.
-
Joten haluan kertoa, että siinä ei ole ainoastaan yksi järjestelmä,
-
vaan useampia järjestelmiä. Useat alijärjestelmät sisältävät laiteohjelmiston
-
Diat olisivat kivoja, mutta voimme aloittaa ilman niitä.
-
Joten, mistä puhummekaan tänään?
-
Ensiksi, puhumme motivaatiosta ja siitä, miksi meidän tulisi analysoida laiteohjelmistoja.
-
Tämän jälkeen meidän tulisi olla pystyttävä tekemään sitä, joten meidän on tuotava esille joitain edellytyksiä
-
Sitten syvennymme aiheeseen, yritämme katsoa sitä, miten saamme laiteohjelmiston
-
miten voimme analysoida sitä ja miten voimme muokata sitä
-
Hmm. Angel: Olemme pahoillamme pienestä teknisestä ongelmasta, tutkimme sitä. Se on toiselle puheelle. Olen pahoillani.
-
[puhuu saksaa]
-
Hmm
-
Okei, joten voimme mennä ilman dioja, se käy.
-
Aloitetaan motivaatiosta, miksi haluamme tehdä laiteohjelmistoanalyysiä.
-
Kun puhuin asianajajani kanssa, ymmärsin, että minun täytyy siivota 90 % motivaatiodioistani.
-
Ja se mitä jää jäljelle, voi tehdä yhteentoimivuuden saavuttamiseksi.
-
naurua
-
Voit tehdä sen, jos haluat eroon virheistä, ja valmistaja
-
ei halua tai ei kykene. Ja eräs mielenkiintoinen seikka
-
keskustelussa on se, liittyen forensiikkaan, tuhansien laitteiden tutkiminen
-
päivittäisessä elämässä. Tekevätkö he vain sen, mitä täytyy tehdä?
-
Herald: Kyllä, mutta silti haemme videoenkelin korjaamaan ongelman. Meillä pitäisi
-
olla semmoinen täällä yhden minuutin sisällä. Edelleen, pahoittelut.
-
Meillä on nyt sertifioitu Powerpoint-asiantuntijamme Nick Farr lavalla
-
aplodit
-
Se kestää vain minuutteja nyt
-
Ehkä voimme jatkaa. Joten, kerron mitä edellytyksiä tulisi
-
olla, kun analysoinnissa lähtee liikkeelle. Sinulla tulisi vähintään olla hyvä tietämys
-
sulautettujen järjestelmien arkkitehtuurista. Sinun olisi pitänyt käsitellä oheislaitteita,
-
väyläliitäntöjä ja niin edelleen. Sinun pitäisi pystyä lukemaan
-
ja kirjoittamaan Assembler-koodia. Jotkut saattavat sanoa:
-
minulla on todellä hyvä purkuohjelma, mikä on hyvä,
-
jos se sopii sinulle, mutta, älä luota siihen, että saatavana on purkuohjelma,
-
joka sopii juuri kyseiseen arkkitehtuuriin, jonka parissa työskentelet
-
Erityisesti, jos työskentelet matalalla tasolla rekisteriasioiden parissa
-
Ja mielestäni, purkuohjelman tuotos hämmentää sinua enemmän kuin auttaa
-
Tulet purkamaan ehkä, C:n ajonaikaisia kirjastoja, jotka on optimoitu olemaan mahdollisimman pieniä
-
jotka voivat olla todella haastavia purkuohjelman tuotoksessa.
-
Jos haluat oppia käytännössä miten sulautetut järjestelmät toimivat, voi olla hyvä idea hommata
-
Arduino tai mikä vaan. Kirjoitat hieman C-koodia, työskentelet laitteistotasolla
-
Sitten vaan käännät sen ja katsot, miltä purettu näyttää.
-
On hyvä olla laitelukija tai ohjelmoija, kuten galib. Ongelma on siinä, että ne ovat kalliita.
-
Jos luulet, että teemme laiteohjelmistoanalyysiä, se voi olla arvokas sijoitus hakkeritilallesi
-
Ja viimeisenä mutta ei vähäisimpänä, mitä tarvitse eniten, on aikaa.
-
Aika, aika, aika. Se voi viedä tunteja, päiviä ilman edistystä, joten olkaa kärsivällisiä
-
naurua
-
Ketään vapaaehtoisia tekemään dioja tähän?
-
Vannon, että se toimi täydellisesti ulkoisella monitorillani
-
Joo?
-
Joten joudun hakemaan USB-tikkuni, odottakaa hetki.
-
Ei hätää, olemme joustavia [viheltää]
-
Onko täällä ketään, jolla olisi tietokonetta lähettyvillä?
-
Herald: Sillä välin kun selvitämme tätä, on hyvä hetki muistuttaa teitä kaikkia
-
että etsimme vieläkin joitain enkeleitä. Voisit olla videoenkeli, joille
-
on kova kysyntä juuri nyt. Tai voisit tehdä haluamiasi töitä.
-
Voit työskennellä yhdessä tai kahdessa vuorossa. Olisi arvostettavaa
-
koska tarvitsemme vapaaehtoisia tämän tapahtuman järjestämiseen. Myös, jos toit joitain juomia tänne,
-
voisi olla hienoa, jos voisit viedä ne pois mukanasi. Ja laittaa ne pieneen
-
säilytyskoteloon, joita on eri puolilla rakennusta. Luota minuun kun saatte valmiiksi,
-
voit tehdä tämän tiedotuksen. Onko kaikki kunnossa? Ei oikeastaan.
-
naurua
-
Näyttää hyvältä kannettavalla tietokoneella
-
Haluatko pitää lyhyen esittelyn uudesta Ubuntun työpöytäversiosta?
-
Koska en hommat tuota ollenkaan.
-
Joo, peilinäytöt
-
Neljästä kolmeen diaa
-
Nyt edistymme
-
aplodit
-
Nauttikaa puheesta!
-
Loistavaa, nyt diojen kanssa.
-
Pieni tiedotus, puheen lopuksi on 5 lisäminuuttia puhetta.
-
Tehdään niin. Unohtakaa keltaiset palkit.
-
naurua
-
Ei oikeasti.
-
Korkean tason laitteet. Paljon monimutkaisuutta. Kyllä!
-
Täydellistä, kiitos, ilman keltaisia palkkeja, kiitos.
-
Okei. Joten puhuimme ennakkotiedoista, joten syvennymme aiheisiin
-
Ensiksi, meidän täytyy hankkia laiteohjelmisto. Menemme ei-invasiivisesta invasiiviseen.
-
Koska ensimmäinen asia, jota haluamme yrittää, on päästä laiteohjelmistoon käsiksi avaamatta laitetta.
-
Yritämme ensiksi ladata puhtaan binäärin valmistajalta.
-
Tai joltakulta muulta, joka on purkanut binäärin ja laittanut sen internettiin.
-
Voit yrittää ladata käynnistyslevyn, USB, CD-ROM, käynnistysmuistitiedoston tai mitä vaan mitä valmistaja tarjoaa
-
ja purkaa sen, esimerkiksi, WinRARilla Windowsilla tai vaan liittää Linuxiin.
-
Hae tiedostoja nimeltä .bin, .hex, .s19, .mot kuten Motorola, .rom tai .raw.
-
Useimmiten binääri, joka tarkoittaa .bin, .rom
-
Ei-binääritiedostot tulisi muuntaa bin-tiedostoiksi, esimerkiksi muuntimien, kuten hex2bin avulla.
-
Jos tämä ei toimi, voimme ehkä saada päivitysohjelman valmistajalta
-
Tavallisesti ne ovat Windowsille tehtyjä .exe-tiedostoja.
-
On olemassa erilaisia päivitysohjelmiston tyyppejä. Ensinnäkin itsepurkavia arkistoja.
-
Se voi olla asennusohjelma myös, kuten Installshield tai mikä vain
-
Se olla päivitysohjelma, yksinkertainen .exe-tiedosto ilman asennuksia, ainoastaan sisältäen levykuvan.
-
Se saatta olla päivitysohjelma, joka lataa levykuvan tai se saattaa olli jokin muista
-
mutta pakattu suoritettavalla paketoijalla, kuten UPX tai PECompact.
-
Mennään hieman yksityiskohtiin.
-
Joten, jos se on itsepurkautuva arkistohaku allekirjoitukselle, kuten RARSFX tai PK.
-
Voit purkaa ne, esimerkiksi uudelleennimeämällä PK:n, joka sisältää .zip-tiedoston, jonka voit purkaa.
-
Jos se on asennusohjelma, kuten Installshield, on olemassa erikoispurkutyökaluja, mutta ongelma on siinä
-
että ne ovat vaikeakäyttöisiä ja erityisesti versiokohtaisia. Se saattaa toimia tai olla toimimatta.
-
Paras tapa on vain antaa sen asentaa ja hakea asennetuista tiedostoista
-
puhdasta levykuvaa tai päivitysohjelmaa. Jos se on päivitysohjelma, joka sisältää laiteohjelmiston levykuvan,
-
voimme hakea levykuvaa suoritettavasta tiedostosta käyttäen mieleistä heksaeditoriasi.
-
Ehkä päivitysohjelma kirjoittaa dataa tiedostoon, väliaikaiseen tiedostoon useimmiten ja poistaa
-
sen käytön jälkeen. Voit käyttää ProcessMonitoria, joka on kuten Strace, mutta Windowsilla.
-
ja voit katsoa mitä tiedostoja levyllä on kirjoitettu ja yrittää kaapata niitä
-
ennen kuin ne poistuvat. Ehkä päivitysohjelma vain tarkistaa laitettasi, joten se on
-
vain pieni latausohjelma. Tarkistamalla laitetyyppisi, vilkaise valmistajan ftp-sivua
-
ja lataako se levykuvaa, jos sellainen on saatavilla.
-
Jos se lataa levykuvaa tiedostoon, käytä ProcessMonitoria uudelleen.
-
Jos se lataa RAM-muistiin, sinun täytyy käyttää debuggeria ja dumpata se muistista.
-
Jos sinulla on pakattu päivitysohjelma, joka tietenkin on tehty säästämään tilaa.
-
Jos se on standardi UPX, voit ladata UPX:n ja käyttää "UPX -d":tä purkaaksesi sen.
-
Joskus valmistaja rikkoo UPX:n lisenssiä ja muokkaa UPX:ää poistamalla
-
olennaista tietoa tiedostosta, jotta siitä saadaan pakkauskelvoton. Joten sinun tarvitsee käyttää erityistä purkajaa.
-
Muut suoritettavat pakkaajat ovat useimmiten suunniteltu kompressoimattomiksi.
-
Tällöin tarvitse erikoispurkajaa myöskin.
-
Eräs haaste voi tulla siinä, jos päivitysohjelma sisältää kompressoituja levykuvia.
-
Ne ovat tavallaisesti purettu ennen kuin levykuva on kirjoitettu laitteelle, joten voimme vain katsoa
-
prosessimuistia debuggerin avulla ja dumpata sen.
-
Haasteellisempaa on se, kun laiteohjelmisto lähetetään kompressoitavaksi laitteelle
-
Joten täytyy käyttää invasiivisia tekniikoita, joista puhun myöhemmin
-
On hyvä laitaa nuuskija valmiiksi, kun ensimmäisen kerran yhdistät laitteen PC-tietokoneeseesi.
-
Ehkä laitteen mukana tuleva lempi-bloatware haluaa päivittää sen välittömästi
-
Mitä voit tehdä nuuskiaksesi siirtoja? Windows XP:llä, pahoittelut vain XP:llä,
-
on TraceSPTI, fantastinen työkalu SPTI SCSI PassThrough Interfacen jäljittämiseen.
-
Mietit SCSI:tä? Minulla ei ole pelkästään SCSI-laitteita, mutta kommunikoinnista suurin osa on tehty käyttäen
-
tätä prokollaa Windowsilla. Tunnistaaksesi S/ATA USB -laitteita, etenkin, jos ne ovat ATAPI,
-
Linux-puolella voit käyttää Wiresharkia jäljittääksesi kommunikaation, koska Wireshark
-
Linuxilla voi jäljittää ja nuuskia USBia. On myös muita työkaluja, kuten Bushound ja niin edelleen
-
katsoaaksesi väylien kommunikaatiota. Ongelma on siinä, että ne ovat tavallisesti erittäin kalliita.
-
Ongelma nuuskiessasi päivityssiirtoa ja rekonstruktoroidessa levykuvaa on se,
-
että se on kuin pulmapeli. Et tiedä miten levykuva buildataan ja miten se tehdään oikein.
-
Jos sinulla ei ole laiteohjelmistoa vielä, se voi mennä invasiiviseksi nyt.
-
Etsimme sarjaliitäntöjä, joskus niihin pääsee käsiksi laitetta avaamatta,
-
joskus ei. Onko meillä sulautettu Linux-järjestelmä? Kyllä, voimme etsiä sarjakonsolia.
-
Ehkä meidän täytyy käyttää JTAGia. 27C3:ssa oli hyvä puhe JTAGista, sarjamuotoisesta flashista ja niin edelleen,
-
joten laitan linkin tähän.
-
Ei siis vieläkään laiteohjelmistoa? Hae ruuvimeisseli, mitätöidään takuut.
-
Avaamme laitteen ja etsimme muistilaitteita PCB:stä.
-
Jos sinulla on todella vanha laite, kohtaat ehkä EPROMseja tai jopa PROMseja, 27-kymppisiä
-
Jos se on vähän uudempi, saatat nähdä EEPROMseja ja flashia. 28, 29, 39, 49 jotain ja
-
isoja 48-pinnisiä flash-laitteita, esimerkiksi useille eri nimillä
-
Mukava nähdä, että sarjamuistit, ne 8-pinniset laitteet 25..., joskus 24...
-
ovat hiljattain tulossa standardiksi. Niistä on helppo poistaa juotos ja uudelleenjuottaa
-
ja saatavilla on todella halpoja lukijoita ja ohjelmoijia. Mutta pyydän, vaikka jotkut sanovat, että voimme
-
tehdä sen järjestelmässä ilman sirun juottamista, älkää tehkö niin. Se voi johtaa todella suuriin ongelmiin.
-
Jotta asia olisi hieman vaikemapi, laiteohjelmisto voi olla sisällytettynä sirun sisäisiin muisteihin.
-
Voit käyttää omaa ohjelmointirajapintoja laiteohjelmiston lukemiseen, JTAGIa totta kai.
-
Joissain laitteissa käynnistyslatausohjelmat ovat naamioidussa ROM-muistissa. Voit yrittää käyttää niitä.
-
Jos mikään näistä lähestymistavoista ei onnistu, voit yrittää mikroluotausta.
-
Viime vuoden kongressissa oli puhe matalakustanteisten sirujen mikroluotauksesta, olen
-
liittänyt linkin tähän. Joten ihan vain siksi, että täydellisyyden vuoksi olen maininnut CPLD:t ja FPGA:t.
-
Tiedätte, että CPLD:t on rakennettu käyttäen sisäisiä EEPROMeja
-
FPGA:t, kenttäohjelmoitavilla porttiryhmillä on sisäinen SRAM ja ulkoinen sarjakonfiguraatio-flash.
-
Joitain vuosia sitten niitä markkinoitiin takaisinmallinnus-kestävinä. Ehkä.
-
Huomenna on puhe, samaan aikaan uskoisin Saal 2:ssa, FPGA:iden lähemmästä tarkastelusta.
-
Onneksi olkoon, olemme tehneet sen, meillä on laiteohjelmistomme, täydellistä.
-
Mitä sitten seuraavaksi, meidän täytyy analysoida se.
-
Ongelma on siinä, mitä prosessoria käytetään. Emme tiedä mitä purkuohjelmaa käytämme.
-
Meidän täytyy etsiä netistä tietolehtisiä, jotta saisimme mitä tahansa tietoa.
-
Voimmeko selvittää mikä prosessori on käytössä? Ongelma usein on, ettei tietolehtisiä löydy.
-
Valmistaja sanoo, että jost ostat miljoona laitetta vuodessa ja allekirjoitat NDA:n, niin saat tietolehtiset.
-
Tällöin sinun täytyy olla todella kärsivällinen. Nyt se menee kokeilemiseksi ja erehtymiseksi eri purkuohjelmien kokeilussa.
-
Voit käyttää tiettyjä purkuohjelmia, mutta ne on rakennettu ainoastaan yhdelle arkkitehtuurille.
-
Voit käyttää hyvää työkalua, Interactive Disassembleria, IDAa. Siitä on olemassa freeware-versio.
-
Lisäsin linkin mukaan tämän puheen linkkiosioon, mutta freeware sisältää ainoastaan pienen joukon arkkitehtuureja.
-
Jos haluat kokonaisen paketin, se tulee todella kalliiksi. Mutta on myös toinen työkalu, josta itse todella pidän.
-
Se on ODA, the Online Disassembler, tukee noin kolmeakymmentä arkkitehtuuria, ja se on ilmainen.
-
Voit ladata binääritiedostoja, ladata koodia ja kokeilla eri arkkitehtuureja,
-
ja selvittää, mikä voisi olla se oikea, ja teemme sen nyt.
-
Olen valmistellut jotain binäärikoodia.
-
Tiedän mille arkkitehtuurille se on kirjoitettu, koska tein itse sen.
-
Laitan koodin Online Disassembleriin ja valitsen eri arkkitehtuureja,
-
ja katsotaan miltä purku näyttää.
-
Aloitetaan entisestä Hitachista, nykyinen Renesas, H8S. Toivottavasti pystytte lukemaan tätä.
-
Ottakaa aikaa ja nostakaa kätenne ylös, jos luulette, että se on kelvollinen purku ja
-
olemme löytäneet arkkitehtuurimme.
-
Näen yhden käden.
-
Okei, valitettavasti joudun tuottamaan pettymyksen, se ei ole kelvollinen purku. Näemme sen toiselta riviltä.
-
Purkuohjelma ei kyennyt purkamaan dataa ja se on vain määrittelemätön käsky.
-
Koodissa on useita .word-sanoja. Se ei ole H8S.
-
Yritetään MIPSiä. Taas ottakaa aikaa ja nostakaa käsi ylös, jos luulette, että se on kelvollinen.
-
naurua taas?
-
Se on kelvoton myöskin. Näemme sen toiselta riviltä, koska siellä on dword, jota ei ole purettu.
-
Miten Panasonic MN103 perhe? Sama käsi taas? Oi, näen toisenkin käden.
-
Ok, useita käsiä nyt. OK, kiitos.
-
Ongelma on, ettei se ole validi. Joudun tuottamaan teille pettymyksen.
-
Tässä tapauksessa ongelma on siinä, että se näyttää todella hyvältä, mutta joudutte kaivamaan syvemmälle.
-
Teidän täytyy katsoa, ovatko kaikki aliohjelmat oikein. Onko niissä mitään järkeä?
-
Onko aliohjelmakutsuja ollenkaan ja niin edelleen.
-
Tulette huomaamaan jotain todella outoa. Viimeinen yritys.
-
Miten Texas Instruments MSP430?
-
Ja taas, nostakaa kätenne ylös.
-
Okei? Joo, tällä kertaa se on MSP430!
-
Löysimme arkkitehtuurimme, täydellistä, heureka, bingo, meillä on se.
-
Mitä seuraavaksi? Tiedoston siirtymä, ladatun ohjelmistotiedoston arvo
-
ei usein ole osoiteavaruuden siirtymä. Tää ei ole ongelma, kun arkkitehtuuri
-
käyttää suhteellista osoitteistoa. Suhteellinen osoitteisto tarkoittaa, että meillä on rekisterisisältöä ja mitä vain
-
haluamme käyttää perustuu jonkin rekisterin sisältöön. Sijainnista riippumaton koodi.
-
Mutta ongelmana on nyt absoluuttisen osoitteiston käyttäminen, ja jopa arkkitehtuurit,
-
jotka tukevat suhteellista osoitteistoa sisältää jonkin verran absoluuttista osoitteistoa jossain osassa osoitteita.
-
Emme tiedä, missä on sisäänkäynti. Mistä meidän tulisi aloittaa?
-
Keskeytysvektorit saatetaan dekoodata kokonaan väärin, aliohjelmakutsuissa ei ole mitään järkeä.
-
Ne osoittavat meidän laiteohjelmistomme ulkopuolelle, esimerkiksi tai keskelle käskyjä.
-
Joten kuorman siirto on siis löydettävä.
-
Näytän teille metodin, jota kutsun "kutsun etäisyyshauksi".
-
Valitsemelle lähellä olevia aliohjelmaosoitteita ja päätämme, käytämmekö niistä
-
edeltäviä palautuskäskyjä aliohjelmien edessä vai funktion alussa olevaa
-
syöttöjärjestystä. Rakennamme hakumerkkijonon sisältäen villikortin, ja sitten haemme
-
Teemme sen yhdessä, olen valmistellut esimerkin
-
Tämä on 8051 koodi. 8051:n ydin on todella vanha, se on 8-bittinen ohjain, mutta laajalti käytetty kentällä,
-
koska se on halpa ja voit tehdä sillä mitä haluat.
-
Vasemmassa sarakkeessa näemme esimerkkimme osoitteet, 0x00:sta 0x13:een heksaan.
-
Näemme neljä aliohjelmaa, ensimmäinen juurialiohjelmana kutsuen kolmea muuta aliohjelmaa.
-
Näemme, että ensimmäinen kutsu 0x100:aan on esimerkkimme ulkopuolella, meillä ei ole 0x100:aa tässä esimerkissä.
-
Joten otamme kolme aliohjelmaosoitetta ja lajittelemme ne järjestykseen.
-
Näin ollen, meillä on 0x100, 0x103 ja 0x107. Laskemme erotuksen saadaksemme selville aliohjelmien pituuden.
-
Saamme 3 tavua ja 4 tavua. Nyt katsomme, miten aliohjelmat on rakennettu tässä tiettyssä arkkitehtuurissa.
-
x86:lla usein löydätte sen, ei 64-bittisillä alustoilla, mutta 32- ja 16-bittisillä alustoilla.
-
Löydätte pinokehyksen syöttöjärjestyksen jokaisesta funktiosta, kuten "push bp" tai "push ebp 0x55"
-
Voitte siis laukaista sen.
-
8051:llä se ei ole mahdollista. Katsokaa osoitetta 0x0A. Se on 0xE0.
-
Katsokaa osoitetta 0x0D, se on 44, ja 0x11 on 7B.
-
Ne eivät vastaa toisiaan, se ei auta meitä.
-
Tarkastellaan siis edellisiä palautuksia ja kyllä, edessä on palautuksia
-
jokaisessa aliohjelmassa.
Joten otamme 0x22:n [ret] ankkuriksemme.
-
Hakumerkkijonomme näyttää tältä;
Aloitamme 0x22:sta, meillä on
-
aliohjelma, jonka pituus on kolme tavua,
joten meillä on 0x22 [ret], kaksi villikorttia ja
-
uudelleen palautus. Toinen osa hakumerkkijonosta koodaa toisen
-
aliohjelman neljällä tavulla. Joten meillä on villikortti,
villikortti, villikortti ja uudelleen palautus [0x22]
-
Tässä yksinkertaisessa esimerkissä saimme vain yhden osuman,
täydellistä. Saimme osuman osoitteessa 0x09.
-
Mutta emme halua palautuksen osoitetta,
vaan haluamme aliohjelman osoitteen
-
joten emme käytä 0x09:ä, vaan käytämme 0x0A:ta
-
Otamme alkuperäisen kohdeosoitteen 0x0100,
puramme 0x0A
-
ja saamme koodiesimerkkimme perusosoitteen,
joka on 0xF6
-
Jos sovellamme tätä äskettäin havaittua kuorman siirtoa koodiin ja muutamme siirtymää
-
aloittaen nyt 0x00F6:sta vasemmassa sarakkeessa
näemme, että kaikki kolme aliohjelmaa nyt täsmäävät.
-
Kutsu 0x0100:aan, kutsu 0x0107:aan
ja kutsu 0x013:een.
-
Ok, mielestäni tämä oli vaikea, joten
toistetaan se, mitä olemme jo tehneet
-
Olemme saaneet levykuvamme, olemme
onnistuneesti löytäneet prosessoriarkkitehtuurin,
-
olemme löytäneet purkuohjelman, jolla
puramme laiteohjelmiston,
-
ja toivottavasti löytäneet alkuperäinen
kuoram siirtymän. Joten mitä seuraavaksi
-
Ehkä kysymys herää, onko laitteella
lisälaiteohjelmistoa?
-
Näen hyppyjä ja kutsuja tietämämme laiteohjelmiston
ulkopuolelle, vaikka juuri säädimme
-
kuorman siirtymää. Onko siru sisäinen?
Näemme sen kuvasta, ehkä
-
meillä on ainoastaan laiteohjelmiston osa A.
Ja ehkä se käyttää kirjastoa tai sirun sisäistä osaa B.
-
Joten meidän täytyy katsoa, mitä voimme tehdä
käyttäen laiteohjelmiston muutosta.
-
Nyt kun tämä on tehty, voimme aloittaa
koodin normaalin takaisinmallinnuksen.
-
Haemme merkkijonoja, haemme viittauksia
merkkijonoihin,
-
mutta koska olemme todella matalla sulautetussa
järjestelmässä, voimme ehkä hakea hyvin erikoistuneita,
-
dataviittauksia ja operandeja. Hae USB-kuvauskenttiä,
jotka olet poiminut /lib/lsusb-ohjelmalla
-
Katso USB-magiaa, kuten USBC ja USBS,
tiedät, että näitä kahta dwordia käytetään
-
USB-kommunikoinnissa. Katso IDEa, SATAa ja
ATAPI ID merkkijonoja ja sano samalla:
-
"Olen OCZ SSD -laite" esimerkiksi. Kun
olet nuuskinut laitekommunikointia
-
olet jo löytänyt joitain tyypillisiä tietolohkoja.
Voit yrittää etsiä niitä [binääristä]
-
Viimeisenä, muttei vähäisimpänä, laite on ehkä antanut joitain virhekoodeja, ja voit etsiä merkkijonoja
-
tai operandeja opkoodeissa.
-
On todella mielenkiintoista löytää piilotettuja
laiteohjelmistopäivitysjonoja, koska
-
ne voivat sallia ei-invasiivisen muokkaamisen.
Esimerkiksi hae sirun pyyhkimis- ja
-
ohjelmointikomentoja, voit poimia asianmukaisia
komentoja tietolehtisestä
-
jos käytettävissä on jokin ulkoinen muistilaite.
Olemme tehneet analyysin ja olemme
-
oppineet paljon laitteesta.
Nyt aiomme mukauttaa sitä.
-
Ensiksi, meidän täytyy miettiä. Jos
aiomme muuttaa laiteohjelmistoa, meidän pitää
-
valmistautua muuraamaan laitteemme.
-
Valmistajat toteuttavat useita eheystarkistuksia,
ja miksi he tekevät niin?
-
Sen takia, koska laiteohjelmisto tallennetaan flashiin,
joka on altis vanhenemiselle, varsinkin, jos siihen liittyy lämpöä.
-
He tekevät tarkistussummia. On olemassa ohjelmistopohjaisia
tarkissumman laskentamenetelmiä, CRC esimerkiksi.
-
On olemassa jopa laitteistopohjaisia tarkistussumia, joissa
jokin HW-oheislaite tekee työn puolestamme.
-
Koodissa näkyy siis alku- ja loppusiirtymä,
sekä polynomi, jos olet onnekas.
-
Se voi myös olla kovakoodattuna oheislaitteeseen,
jotta en näkisi mitään.
-
Se voi olla yhdistelmä molempia, pelkästään
käynnistyksen yhteidessä tai syklisesti taustalla.
-
Mitä meidän on tehtävä muuttaaksemme laiteohjelmistoa?
Joko korjata nämä tarkistussummat,
-
tai korjata ne tarkistussumma-algoritmit,
jotta ne eivät käynnisty.
-
Mitkä ovat muutostyömme tavoitteet, tietysti
kuulimme sen motivaatio-osassa.
-
Olemme korjaamassa virheitä, ja ehkäpä virheet
sisältyvät sirun toiseen osaan, jota meillä ei
-
ole tällä hetkellä. Ehkä meidän täytyy dumpata
lisämuistialueita.
-
Sitä he tekivät Cisco VoIP -hakkeroinnissa.
He yrittivät löytää memcpy-rutiinin ja käyttää sitä.
-
Jos et löydä memcpy-rutiinia, voit ehkä
totetuttaa oman version. Miksei?
-
Voitte dumpata koodia toisilta muistialueilta
ulostulopuskureille.
-
Jos sinulla ei ole tilaa ulkoisella muistilaitteella,
mikset ohjelmoisi sitä laitteelle
-
ja lukisi sitä laitteelta. Se voi olla todella
mielenkiintoista kerätä lisää laitteen sisäistä tietoa.
-
Esimerkiksi RAM-dumpin kanssa, koska
staattista analyysiä tehdessä, mietit aina
-
mitä RAMissa on tässä ja tuossa osoitetteessa.
Nyt kun olemme mukauttaneet laiteohjelmistoa,
-
voimme pistää sen takaisin laitteeseen. Esimerkiksi
käyttämällä alkuperäistä päivitysohjelmistoa.
-
Se saattaa sisältää jotain tarkistussumman tarkastuksia,
ken tietää.
-
Voimme yrittää uudelleenohjelmoida sen mahdollisesti
saatavilla olevaan muistilaitteeseen, tai prosessoriin.
-
Tämä voi olla tehty käyttäen sarjaliitäntää,
joko JTAGia tai oheislaitteita.
-
Siinäpä se. Kiitos paljon.
-
aplodit
-
Angel: Jos teillä on kysymyksiä, järjestäytykää tilassa
olevien mikrofonien eteen, täällä on neljä niitä.
-
Onko mitään kysymyksiä? Mikrofoni 1 kiitos;
-
Kysymys: Ei ole kysymys, vaan vinkki. Jos tarvitset jotain binääridumppia tai vastaavaa tiedostoylijäämää Windowsille
-
voit kieltää poisto-oikeuden, joten asennus- tai päivitysohjelmisto ei
pysty poistamaan sen väliaikaisia tiedostoja.
-
Joten ne jäävät laitteelle uudelleenohjelmoinnin jälkeen.
-
A: Onko sinulla vinkkiä, mitä käyttää siinä tapauksessa?
-
Q: Anteeksi?
-
A: Onko sinulla vinkkiä siitä, onko tähän olemassa
erikoistyökalua?
-
Q: Se ei ole välttämätön, se on Windowsissa
sisäänrakennettuna valmiiksi.
-
A: OK
-
Q: Ja en tiedä sanaa.
-
A: OK
-
Q: Mutta voit peruuttaa oikeudet kokonaan hakemistosta,
poistamiseen on olemassa oma erikoisoikeus.
-
A: OK, kiitos.
-
Angel: Onko enää lisää kysymyksiä?
-
Angel: Ei näytä siltä. Antakaa lämpimät suosionosoitukset
puhujallemme Stefan Widmannille.
-
aplodit
A: Päällä [mikrofoni 2]
-
Angel: On vielä yksi kysymys... Ei?
-
A: OK
-
Angel: Kun poistutte, ottakaa...
-
[Translated by Markus Kallatsa (KYBS2001 course assignment at JYU.FI)]