Ik probeer te achterhalen welk processortype of -familie wordt gebruikt in een embedded systeem, zodat ik de machinecode in een (E)EPROM kan disassemblen en kan aanpassen. Jammer genoeg heb ik op korte termijn geen toegang tot de hardware en kan ik daaruit niets afleiden. Wel heb ik meerdere versies van de volledige binaire dump die in het Flash-geheugen wordt geladen.
Zijn er bepaalde methodieken, zoals analyseren van een byte histogram, of herkenbare patronen om stap voor stap te identificeren welke instructieset / processorfamilie gebruikt is?
Het standaard UNIX 'file' commando herkent het bestand slechts als 'data'. In de romdump (128Kb) zijn leesbare ASCII-strings opgenomen, waaronder ook C-achtige sprintf()-opmaaktekens zoals %s en %d. De header van de ROM-dump begint als volgt (excuses voor het uitrekken van de layout):
De vele 0x00 bytes zijn niet-gebruikte geheugenlocaties. Jammer genoeg weet ik niet of de uitvoer van de ROM bij 0x00000000 begint, zodat (een deel van) 0xFA 0x00 0xFC 0x42 meteen de eerste instructie vormt, of dat er een ander entry point is.
Alle tips zijn welkom!
Zijn er bepaalde methodieken, zoals analyseren van een byte histogram, of herkenbare patronen om stap voor stap te identificeren welke instructieset / processorfamilie gebruikt is?
Het standaard UNIX 'file' commando herkent het bestand slechts als 'data'. In de romdump (128Kb) zijn leesbare ASCII-strings opgenomen, waaronder ook C-achtige sprintf()-opmaaktekens zoals %s en %d. De header van de ROM-dump begint als volgt (excuses voor het uitrekken van de layout):
code:
1
2
3
4
5
6
7
8
9
10
| 00000000 fa 00 fc 42 00 00 00 00 00 00 00 00 00 00 00 00 |...B............| 00000010 fa 01 5e d6 00 00 00 00 fa 01 8a d6 00 00 00 00 |..^.............| 00000020 00 00 00 00 00 00 00 00 fa 01 cc d4 46 f8 0a 00 |............F...| 00000030 3d 04 e0 d8 da 00 3a 00 e0 a8 9a b7 0a 70 46 59 |=.....:......pFY| 00000040 13 00 3d 07 7e b7 9a b7 fe 70 46 59 11 00 3d fa |..=.~....pFY..=.| 00000050 7e b7 9a b6 fe 70 7e b6 f6 f8 b0 fe f0 48 db 00 |~....p~......H..| 00000060 fa 01 40 d2 fa 01 5a ce f0 48 f0 59 28 40 38 50 |..@...Z..H.Y(@8P| 00000070 cd 03 f0 48 f0 59 0d 05 f0 48 81 40 f0 59 18 50 |...H.Y...H.@.Y.P| 00000080 81 50 db 00 00 00 00 00 00 00 00 00 fa 01 d8 d8 |.P..............| 00000090 fa 01 02 ca 00 00 00 00 00 00 00 00 00 00 00 00 |................| |
De vele 0x00 bytes zijn niet-gebruikte geheugenlocaties. Jammer genoeg weet ik niet of de uitvoer van de ROM bij 0x00000000 begint, zodat (een deel van) 0xFA 0x00 0xFC 0x42 meteen de eerste instructie vormt, of dat er een ander entry point is.
Alle tips zijn welkom!
Remember, if you have any trouble you can always send a telegram to the Right People.