Dissassembleri softa
Dissassemblerina on toistaiseksi käytetty idapro:ta. Se on ohjelmisto johon toimivan version saattaa löytää joltain piraattisaitilta seuraavilla hakusanoilla:
Googlettamalla IDA Pro 5.0.0.879
valitettavasti en muista miten omani löysin, mutta pienellä vaivalla se löytyy ja tähän voi postata mistä se löytyi.
IdaPro tarvitaan jotta ECUn kooditiedostot ovat luettavissa. Postaan kooditiedostot ja ohjeet tänne kun ensimmäinen kiinnostunut on saanut idapron: koneelleen.
Googlettamalla IDA Pro 5.0.0.879
valitettavasti en muista miten omani löysin, mutta pienellä vaivalla se löytyy ja tähän voi postata mistä se löytyi.
IdaPro tarvitaan jotta ECUn kooditiedostot ovat luettavissa. Postaan kooditiedostot ja ohjeet tänne kun ensimmäinen kiinnostunut on saanut idapron: koneelleen.
mut mut - tunteeko 32 bittistä käskykantaa ja osaako HS7052 prosan erikoisuuksia? Toisin sanoen mihin muotoon tuo purkaa konekoodin - oikeaksi assebleriksi vai pseudokoodiksi? Itsellä ei kokemusta siksi kysyn.
EDIT: pikku googletuksella - joo: IDA Pro will be able to decompile both of them (SH7052/SH7055). I have IDA Pro, HEW, Hitachi C-compiler and emulators and debuggers for these processors...
Eli etsimään tuota proggista....
Edited By busajasa on 1193693992
EDIT: pikku googletuksella - joo: IDA Pro will be able to decompile both of them (SH7052/SH7055). I have IDA Pro, HEW, Hitachi C-compiler and emulators and debuggers for these processors...
Eli etsimään tuota proggista....
Edited By busajasa on 1193693992
Eli busajakawakartat hakemistoon. Lataat busa001.zip:n tai suoraan .bin tiedoston aj sitten ei muuta kuin IdaPro auki, prosessorin tyypiksi MC68HC16 ja muut asetukst defaulttina ajat sisään. Pitäisi näyttää samalta kuin .htm.
Sitten lopuksi lataat .idc tiedoston sisään joka sisältää funktioiden nimeämisen ja enum datan ja sulla on 1999 busan koodi...
Siitä sitten tutkimaan:
- assembler ikkunaa
- functions ikkunaa
- enum ikkunaa jossa on prosessorin pinnat assignattu eri portteihin
Edited By PetriK on 1193723522
IDAssa ei ollut SH-2 kantaa mutta googlettamalla löytyi että on alaspäin yhteensopiva ja SH-4 versiota voi käyttää.
Pitää vielä selvittää likuluku kuviot sillä ilm. kaikissa Hitachi prossissa ei ole liukuluku käsittelyä ja voi aiheutaa disassembloinnissa pikku heittoa. Mutta SH-4:llä pääsee riittävään tarkkuuteen - kuulemma
Pitää vielä selvittää likuluku kuviot sillä ilm. kaikissa Hitachi prossissa ei ole liukuluku käsittelyä ja voi aiheutaa disassembloinnissa pikku heittoa. Mutta SH-4:llä pääsee riittävään tarkkuuteen - kuulemma
busajasa kirjoitti:IDAssa ei ollut SH-2 kantaa mutta googlettamalla löytyi että on alaspäin yhteensopiva ja SH-4 versiota voi käyttää.
Pitää vielä selvittää likuluku kuviot sillä ilm. kaikissa Hitachi prossissa ei ole liukuluku käsittelyä ja voi aiheutaa disassembloinnissa pikku heittoa. Mutta SH-4:llä pääsee riittävään tarkkuuteen - kuulemma
OK, eli dissassemblointi onnistuu - tässä on linkki mitsubishin SH7052 prossun ECU:lle kirjoitettuun koodiin. IO ja ohjelman toimintalogiikka on varmasti aivan erilainen kuin mitä meillä Suzukeissa, mutta bootloader:ista saattaisi löytyä jotain mielenkiintoista. Saisi ainakin testattua tuon debuggausympäristön busan koodia odottaessa...
http://macmadigan.no-ip.com/BusaECU....ata.zip
ja tässä toinen paketti jonka pitäisi olla 7052... 7055 koodia (koska ovat EVO5,6,7 malleista. EVO 7 pitäisi olla 7052.
http://macmadigan.no-ip.com/BusaECU....007.rar
Edited By PetriK on 1194180711
Ainakin tämä 02_LANCER_EVO7_GSR_EDM_88840013 näyttäisi lähtevän kääntymään IdaPro:Lla. Ensimmäisissä byteissä nähtävästi määritellään jotain data ja koodialueita koska siellä olevia osoitteita ei pystytty kääntämään koodiksi.
Täytyy tutustua prosessorin ohjeisiin ja katsoa mitä tuolla vektoreita alussa on jotta pystyy katsomaan mistä mahdollisesti bootloaderia voisi lähteä etsimään.
Options - General - SH4 big endian oli asetukset.
Alt+C kääntää blokin kerrallaan.
Täytyy tutustua prosessorin ohjeisiin ja katsoa mitä tuolla vektoreita alussa on jotta pystyy katsomaan mistä mahdollisesti bootloaderia voisi lähteä etsimään.
Options - General - SH4 big endian oli asetukset.
Alt+C kääntää blokin kerrallaan.
ok,
Katsoin tuota EVO:n koodia ja se näyttää ihan koodilta. Muutamat ensimmäiset .long määrittelyt kertovat mihin hypätään erilaisissa keskeytyksissä (aivan kuten sofware ja hardware manuaaleissa kuvataan).
Sitten kun lähtee katsomaan ko muistiosoitteesta niin sieltä lähtee koodi nätisti liikkeelle...
Nyt täytyisi ymmärtää tuo osoitteen muodostuminen sekä erityisesti IO puoli. Kaikki IO pinnit ovat tässä samat kuin busassa, samoin pitäisi bootloader olla aikalailla samanlainen jossa pitäisi näkyä sarjaprotokollaa...
Tässä mallia miltä koodi näillä mun asetuksilla alkoi näyttämään. Eli resetin jälkeen siirtyy muistialueelle EB9 suorittamaan tällaista koodinpätkää - täytyy tunnustaa että on taas aivan uudennäköistä koodia, tästä ei ainakaan näin alkuun ymmärrä yhtään mitään. Esim jo pelkästään jmp @r0 ?
eB9:000098CC EntryAfterReset: ! CODE XREF: eB9:000098B8j
eB9:000098CC mov.l @(8,pc), r0 ! [000098D8] = unk_F0
eB9:000098CE ldc.l @r0+, sr
eB9:000098D0 mov.l @(8,pc), r0 ! [000098DC] = loc_98A4
eB9:000098D2 jmp @r0 ! loc_98A4
eB9:000098D4 nop
eB9:000098A4 loc_98A4: ! CODE XREF: eB9:000098D2j
eB9:000098A4 ! DATA XREF: eB9:off_98DCo
eB9:000098A4 mov.l @(0x14,pc), r15 ! [000098BC] = (dword_FFFF8800+0x1300)
eB9:000098A6 mov.l @(0x18,pc), r0
eB9:000098A8 mov.l @(0x18,pc), r1 ! [000098C4] = (dword_FFFF8800+0x13A0)
eB9:000098AA mov.l r1, @r0
eB9:000098AC mov #0, r0
eB9:000098AE ldc r0, vbr
eB9:000098B0 ldc r0, gbr
eB9:000098B2 mov.l @(0x14,pc), r0 ! [000098C8] = sub_E8BC
eB9:000098B4 jsr @r0 ! sub_E8BC
eB9:000098B6 nop
eB9:000098B8 bra EntryAfterReset
eB9:000098BA nop
Katsoin tuota EVO:n koodia ja se näyttää ihan koodilta. Muutamat ensimmäiset .long määrittelyt kertovat mihin hypätään erilaisissa keskeytyksissä (aivan kuten sofware ja hardware manuaaleissa kuvataan).
Sitten kun lähtee katsomaan ko muistiosoitteesta niin sieltä lähtee koodi nätisti liikkeelle...
Nyt täytyisi ymmärtää tuo osoitteen muodostuminen sekä erityisesti IO puoli. Kaikki IO pinnit ovat tässä samat kuin busassa, samoin pitäisi bootloader olla aikalailla samanlainen jossa pitäisi näkyä sarjaprotokollaa...
Tässä mallia miltä koodi näillä mun asetuksilla alkoi näyttämään. Eli resetin jälkeen siirtyy muistialueelle EB9 suorittamaan tällaista koodinpätkää - täytyy tunnustaa että on taas aivan uudennäköistä koodia, tästä ei ainakaan näin alkuun ymmärrä yhtään mitään. Esim jo pelkästään jmp @r0 ?
eB9:000098CC EntryAfterReset: ! CODE XREF: eB9:000098B8j
eB9:000098CC mov.l @(8,pc), r0 ! [000098D8] = unk_F0
eB9:000098CE ldc.l @r0+, sr
eB9:000098D0 mov.l @(8,pc), r0 ! [000098DC] = loc_98A4
eB9:000098D2 jmp @r0 ! loc_98A4
eB9:000098D4 nop
eB9:000098A4 loc_98A4: ! CODE XREF: eB9:000098D2j
eB9:000098A4 ! DATA XREF: eB9:off_98DCo
eB9:000098A4 mov.l @(0x14,pc), r15 ! [000098BC] = (dword_FFFF8800+0x1300)
eB9:000098A6 mov.l @(0x18,pc), r0
eB9:000098A8 mov.l @(0x18,pc), r1 ! [000098C4] = (dword_FFFF8800+0x13A0)
eB9:000098AA mov.l r1, @r0
eB9:000098AC mov #0, r0
eB9:000098AE ldc r0, vbr
eB9:000098B0 ldc r0, gbr
eB9:000098B2 mov.l @(0x14,pc), r0 ! [000098C8] = sub_E8BC
eB9:000098B4 jsr @r0 ! sub_E8BC
eB9:000098B6 nop
eB9:000098B8 bra EntryAfterReset
eB9:000098BA nop