Vai al contenuto

Reverse engineering firmware ECU


Tky

Messaggi raccomandati

Salve a tutti,

apro questo post in quanto da un po di tempo mi sto imbattendo nel decompilare & disassemblare i file delle ECU (test effettuato su edc16 fiat-group) e sono arrivato a poche conclusioni.

Inizialmente sono partito con l'attività con Windows utilizzando alcuni tool consigliatomi e trovati tramite google ma i limiti trovati tra licenze dei file e altro mi hanno fatto optare a passare nel lato oscuro dello sforzo ed ho migrato su Linux che, dopo settimane con windows, sono arrivato al medesimo punto con poche ore (linux regna).

Ora mi trovo con i file che ho elaborato ai quali non riesco a dare un senso logico in quanto l'output non mi rende nessuna informazione sulla conversione da utilizzare per arrivare al sorgente.

Lo step definitivo è di arrivare al codice Assembly del file originale e modificarne i parametri per integrarne funzioni aggiuntive, ricompilarlo e caricarlo sulla ecu.

Tale metodo vorrei rapportarlo anche al body in quanto ho visto che con vari tool un minimo ci si può elaborare ma limitatamente dai tool a disposizione mentre lavorando su di un codice sorgente le possibili variabili aumentano in modo vertiginoso.

Ora chiedo a voi se qualcuno avesse mai operato in tal senso vi chiedo la cortesia di condividerne i risultati e informazioni.

Questi sono gli step che ho eseguito in visura text su edc16c39 alfa 156 (beckup concessomi da un amico) :

# tail Completo.*
==> Completo.dump <==
00075e40  24 9f cb 98 a7 bf 62 ee  2d 54 24 67 47 ee b4 62  |$.....b.-T$gG..b|
00075e50  62 1d cc c6 7f 62 f6 a7  cf 3b ef 6b 7f 62 62 6a  |b....b...;.k.bbj|
00075e60  a7 73 47 bf a7 f6 24 24  62 48 7f ae 1f a7 54 ad  |.sG...$$bH....T.|
00075e70  24 38 54 24 ad 62 1f a7  48 ee ad ad 62 24 23 62  |$8T$.b..H...b$#b|
00075e80  ad 48 24 ee 1f 47 24 cb  24 23 ad 62 62 10 24 98  |.H$..G$.$#.bb.$.|
00075e90  24 62 ad bc ad ef 24 a7  24 24 3b 2a cf 23 c8 bf  |$b....$.$$;*.#..|
00075ea0  bc bf 24 23 2a a7 a7 ad  cc 35 47 38 ad 24 ee 23  |..$#*....5G8.$.#|
00075eb0  ee ad 24 62 ad ee 1f a7  62 ad 54 c3 62 47 24 24  |..$b....b.T.bG$$|
00075ec0  48 cc cc 62 ad cc ad 24  bc 54 48 47 3b 4c cb 24  |H..b...$.THG;L.$|
00075ed0

==> Completo.redump <==
002463a0  20 31 66 20 61 37 20 20  36 32 20 61 64 20 35 34  | 1f a7  62 ad 54|
002463b0  20 63 33 20 36 32 20 34  37 20 32 34 20 32 34 20  | c3 62 47 24 24 |
002463c0  20 7c 2e 2e 24 62 2e 2e  2e 2e 62 2e 54 2e 62 47  | |..$b....b.T.bG|
002463d0  24 24 7c 0a 30 30 30 37  35 65 63 30 20 20 34 38  |$$|.00075ec0  48|
002463e0  20 63 63 20 63 63 20 36  32 20 61 64 20 63 63 20  | cc cc 62 ad cc |
002463f0  61 64 20 32 34 20 20 62  63 20 35 34 20 34 38 20  |ad 24  bc 54 48 |
00246400  34 37 20 33 62 20 34 63  20 63 62 20 32 34 20 20  |47 3b 4c cb 24  |
00246410  7c 48 2e 2e 62 2e 2e 2e  24 2e 54 48 47 3b 4c 2e  ||H..b...$.THG;L.|
00246420  24 7c 0a 30 30 30 37 35  65 64 30 0a              |$|.00075ed0.|
0024642c

==> Completo.riredump <==
00b3ae20: 6520 3265 2036 3220 3265 2032 6520 3265  e 2e 62 2e 2e 2e
00b3ae30: 2020 3234 2032 6520 3534 2034 3820 3437    24 2e 54 48 47
00b3ae40: 2033 6220 3463 2032 6520 207c 7c48 2e2e   3b 4c 2e  ||H..
00b3ae50: 622e 2e2e 242e 5448 473b 4c2e 7c0a 3030  b...$.THG;L.|.00
00b3ae60: 3234 3634 3230 2020 3234 2037 6320 3061  246420  24 7c 0a
00b3ae70: 2033 3020 3330 2033 3020 3337 2033 3520   30 30 30 37 35
00b3ae80: 2036 3520 3634 2033 3020 3061 2020 2020   65 64 30 0a
00b3ae90: 2020 2020 2020 2020 2020 7c24 7c2e 3030            |$|.00
00b3aea0: 3037 3565 6430 2e7c 0a30 3032 3436 3432  075ed0.|.0024642
00b3aeb0: 630a                                     c.

..non fate caso all'estensione del file Completo.* ma è solo una evoluzione nelle conversioni fatte!

Grazie e spero di poter coinvolgere altri utenti curiosi come me.

  • Like 1
Link al commento
Condividi su altri siti

Ciao Paolo

Sai step-by-step la procedura di decodifica dall'hexdump al sorgente assembly?

Per la conversione in C non ho problemi con linux che tutto può ;)

Grazie

p.s. ho provato da winzozz con idapro e winhex (e tanti altri tool inconcludenti) ma mi sono ritrovato con un file quasi scodificato senza sorgente e sono passato a linux per non aver noie su licenze dei sw

Modificato da Tky
Link al commento
Condividi su altri siti

  • 3 anni dopo...

Crea un account o accedi per lasciare un commento

Devi essere un membro per lasciare un commento

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

×
×
  • Crea Nuovo...