Setup IDA Pro to disassemble preFL Convers+ Firmware 7M2T-14C026-AG
Posted: 02 Nov 2021, 12:07
In this topic i'd like to show how i setup my reverse engineering environment to disassemble the IPC firmware of release 7M2T-14C026-AG.
Online community for electronics and microcontroller reverse engineering
https://microhacker.denkdose.de/
Start address | End address | Size | Content | Comment |
---|---|---|---|---|
0x0000_0000 | 0x0000_001F | 0x0000_0020 | Reset Vector table | Used for the MAC to know where to jump under certain conditions (e.g. Reset, Interrupt, ...) |
0x0000_1000 | 0x0000_3FFFF | 0x0000_4000 | Primary Bootloader (PBL) | This code is needed to bring the MAC and it's periphals up and running, like the BIOS of a PC |
0x0000_5000 | 0x00FB_4FFF | 0x00FB_0000 | MAIN Firmware | 1 MB of Firmware code, placed into internal Flash of MAC |
0x3000_0000 | 0x3001F_FFFF | 0x0020_0000 | FLASH Firmware | 2 MB of Firmware code/data, placed into the external Flash attached to the MAC |
0x4000_0000 | 0x4000_BFFF | 0x0000_C000 | SRAM | 48 KB internal SRAM of the MAC |
0xFC00_0000 | 0xFC0F_FFFF | 0x0010_0000 | Control Register Space | 1 MB address space to access periphals of the MAC |
Code: Select all
selectinterface 0
speed 750
jtagconf -1,-1
device MAC7116
BE
connect
Code: Select all
savebin c:\temp\bootvectors.bin, 0x0, 0x20
savebin c:\temp\pbl.bin, 0x1000, 0x4000
Code: Select all
VECT:00000000 ; Segment type: Pure code
VECT:00000000 AREA VECT, CODE, ALIGN=0
VECT:00000000 CODE32
VECT:00000000 B loc_1018
VECT:00000000 ; DATA XREF: sub_2DF82+34↓r
VECT:00000000 ; sub_2DF82:loc_2DFCE↓r
VECT:00000004 ; ---------------------------------------------------------------------------
VECT:00000004 B loc_5308
VECT:00000008 ; ---------------------------------------------------------------------------
VECT:00000008 B loc_530C
VECT:0000000C ; ---------------------------------------------------------------------------
VECT:0000000C B loc_5310
VECT:00000010 ; ---------------------------------------------------------------------------
VECT:00000010 B loc_5314
VECT:00000014 ; ---------------------------------------------------------------------------
VECT:00000014 B loc_5318
VECT:00000018 ; ---------------------------------------------------------------------------
VECT:00000018 B loc_531C
VECT:0000001C ; ---------------------------------------------------------------------------
VECT:0000001C B loc_5320
VECT:0000001C ; VECT ends
Code: Select all
VECT:00000000 B reset_handler
Code: Select all
PBL:00001018 ; ---------------------------------------------------------------------------
PBL:00001018
PBL:00001018 reset_handler ; CODE XREF: VECT:00000000↑j
PBL:00001018 LDR R0, =0x4000BEFC
PBL:0000101C MSR CPSR_c, #0xD2
PBL:00001020 SUB SP, R0, #0x100
PBL:00001024 MSR CPSR_c, #0x5F ; '_'
PBL:00001028 B loc_3E50
PBL:00001028 ; ---------------------------------------------------------------------------
Code: Select all
PBL:0000101C MSR CPSR_c, #0b11010010
Code: Select all
MAIN:000050D0 SVC 0xEFEFEF
MAIN:000050D4 SVC 0xEFEFEF
MAIN:000050D8 SVC 0xEFEFEF
MAIN:000050DC SVC 0xEFEFEF
MAIN:000050E0 SVC 0xEFEFEF
MAIN:000050E4 SVC 0xEFEFEF
MAIN:000050E8 SVC 0xEFEFEF
MAIN:000050EC SVC 0xEFEFEF
MAIN:000050F0 SVC 0xEFEFEF
MAIN:000050F4 SVC 0xEFEFEF
MAIN:000050F8 SVC 0xEFEFEF
MAIN:000050FC SVC 0xEFEFEF
MAIN:00005100 STRHEQ R6, [R0],-R4
MAIN:00005104 STRHEQ R6, [R0],-R12
MAIN:00005108 ANDEQ R6, R0, R4,ASR#7
MAIN:0000510C ANDEQ R6, R0, R12,ASR#7
MAIN:00005110 LDRDEQ R6, R7, [R0],-R4
MAIN:00005114 LDRDEQ R6, R7, [R0],-R12
MAIN:00005118 ANDEQ R6, R0, R4,ROR#7
MAIN:0000511C ANDEQ R6, R0, R12,ROR#7
MAIN:00005120 STRDEQ R6, R7, [R0],-R4
MAIN:00005124 STRDEQ R6, R7, [R0],-R12
MAIN:00005128 ANDEQ R6, R0, R4,LSL#8
MAIN:0000512C ANDEQ R6, R0, R12,LSL#8
MAIN:00005130 ANDEQ R6, R0, R4,LSL R4
MAIN:00005134 ANDEQ R6, R0, R12,LSL R4
MAIN:00005138 ANDEQ R6, R0, R4,LSR#8
MAIN:0000513C ANDEQ R6, R0, R12,LSR#8
MAIN:00005140 ANDEQ R6, R0, R4,LSR R4
MAIN:00005144 ANDEQ R6, R0, R12,LSR R4
MAIN:00005148 ANDEQ R6, R0, R0,ASR#8
MAIN:0000514C ANDEQ R6, R0, R8,LSR#9
MAIN:00005150 STRHEQ R6, [R0],-R0
MAIN:00005154 STRHEQ R6, [R0],-R4
MAIN:00005158 STRHEQ R6, [R0],-R8
MAIN:0000515C ANDEQ R6, R0, R8,ROR#9
MAIN:00005160 STRDEQ R6, R7, [R0],-R0
MAIN:00005164 STRDEQ R6, R7, [R0],-R4
MAIN:00005168 STRDEQ R6, R7, [R0],-R12
MAIN:0000516C ANDEQ R6, R0, R0,LSL R5
MAIN:00005170 ANDEQ R6, R0, R8,LSL R5
MAIN:00005174 ANDEQ R6, R0, R0,LSR#10
MAIN:00005178 ANDEQ R6, R0, R8,LSR#10
MAIN:0000517C ANDEQ R6, R0, R0,LSR R5
MAIN:00005180 ANDEQ R6, R0, R8,LSR R5
MAIN:00005184 ANDEQ R6, R0, R0,ASR#10
MAIN:00005188 ANDEQ R6, R0, R4,ASR#10
MAIN:0000518C ANDEQ R6, R0, R12,ASR#10
MAIN:00005190 ANDEQ R6, R0, R0,ROR#10
MAIN:00005194 ANDEQ R6, R0, R4,ROR#10
MAIN:00005198 ANDEQ R6, R0, R12,ROR#10
MAIN:0000519C ANDEQ R6, R0, R4,ROR R5
MAIN:000051A0 ANDEQ R6, R0, R12,ROR R5
MAIN:000051A4 ANDEQ R6, R0, R4,LSL#11
MAIN:000051A8 ANDEQ R6, R0, R12,LSL#11
MAIN:000051A8 ; ---------------------------------------------------------------------------