Сейчас на форуме: Dart Raiden, bedop66938, morgot (+6 невидимых) |
eXeL@B —› Электроника —› Исследование прошивки |
Посл.ответ | Сообщение |
|
Создано: 08 октября 2011 14:17 · Личное сообщение · #1 Здравствуйте! имеется прошивка http://files.hddguru.com/download/Software/Research%20%20Development/ROM_7200.11_750GB_SD15_B100.zip При выборе точки входа "ROM:00000000" получается следующий код который странно заканчивается на "ROM:00000028" . Я не правильно выбрал точку входа или адресное пространство ROM ? Как определить точку входа? Инструкции по адресу ROM:0000003 дизассемблировались вручную. ROM:00000000 ; Processor : ARM ROM:00000000 ; Target assembler: Generic assembler for ARM ROM:00000000 ; Byte sex : Little endian ROM:00000000 ROM:00000000 ; =========================================================================== ROM:00000000 ROM:00000000 ; Segment type: Pure code ROM:00000000 AREA ROM, CODE, READWRITE, ALIGN=0 ROM:00000000 CODE32 ROM:00000000 ANDEQ R2, R0, R12,LSL#6 ROM:00000004 ANDEQ R0, R0, R0,ASR#32 ROM:00000008 ANDEQ R8, R0, R0,ASR#4 ROM:0000000C ANDEQ R10, R4, R6,ROR#22 ROM:00000010 ANDEQ R3, R0, R2,LSL#16 ROM:00000014 LDREQ R3, [R6],-R4,LSL#16 ROM:00000018 LDREQ R4, [R8],-R6,LSL#16 ROM:0000001C LDREQ R5, [R12],R3,LSL#16 ROM:00000020 STREQB R5, [R12,R11,LSL#16] ROM:00000024 LDREQB R5, [SP,R5,LSL#16] ROM:00000028 LDREQB R7, [SP,LR]! ROM:00000028 ; --------------------------------------------------------------------------- ROM:0000002C DCB 0 ROM:0000002D DCB 0 ROM:0000002E DCB 0 ROM:0000002F DCB 8 ROM:00000030 DCB 0 ROM:00000031 DCB 0 ROM:00000032 DCB 0 ROM:00000033 DCB 0 ROM:00000034 DCB 0 ROM:00000035 DCB 0 ROM:00000036 DCB 0 ROM:00000037 DCB 0 ROM:00000038 ; --------------------------------------------------------------------------- ROM:00000038 EOREQS R12, R0, #0x30 ROM:0000003C ANDEQ R8, R0, R0,ASR#4 ROM:00000040 ROM:00000040 loc_40 ; DATA XREF: ROM:00000180o ROM:00000040 ; ROM:00000184r ... ROM:00000040 MOV R0, #0xD1 ; 'T' ROM:00000044 MSR CPSR_c, R0 ROM:00000048 LDR SP, =0x4003100 ROM:0000004C MOV R0, #0xD2 ; 'T' ROM:00000050 MSR CPSR_c, R0 ROM:00000054 LDR SP, =unk_11970 ROM:00000058 MOV R0, #0xDB ; '-' ROM:0000005C MSR CPSR_c, R0 ROM:00000060 LDR R1, =0x4003500 ROM:00000064 MOV SP, R1 ROM:00000068 MOV R0, #0xD7 ; '+' ROM:0000006C MSR CPSR_c, R0 ROM:00000070 LDR R1, =unk_11570 ROM:00000074 MOV SP, R1 ROM:00000078 MOV R0, #0xD3 ; 'L' ROM:0000007C MSR CPSR_c, R0 ROM:00000080 LDR SP, =unk_11D70 ROM:00000084 MCR p15, 0, R1,c7,c10, 4 ROM:00000088 MOV R0, #unk_60000 ROM:0000008C MRC p15, 1, R1,c15,c1, 0 ROM:00000090 ORR R1, R0, R1 ROM:00000094 MCR p15, 1, R1,c15,c1, 0 ROM:00000098 BLX sub_564 ROM:0000009C LDR R0, =unk_10E70 ROM:000000A0 LDR R1, =0 ROM:000000A4 BL sub_198 ROM:000000A8 LDR R0, =0x4003504 ROM:000000AC LDR R1, =unk_1514 ROM:000000B0 BL sub_198 ROM:000000B4 BLX sub_55A ROM:000000B8 BLX sub_578 ROM:000000BC BLX sub_3AC ROM:000000C0 BLX nullsub_3 ROM:000000C4 MOV R0, #1 ROM:000000C8 LDR R1, =dword_13FF4 ROM:000000CC LDR R1, [R1] ROM:000000D0 LDR R2, =0x25592559 ROM:000000D4 CMP R1, R2 ROM:000000D8 BNE loc_E4 ROM:000000DC MOV R0, #7 ROM:000000E0 B loc_130 ROM:000000E4 ; --------------------------------------------------------------------------- ---отрезано---------------------- |
|
Создано: 08 октября 2011 14:43 · Поправил: SergX · Личное сообщение · #2 |
|
Создано: 08 октября 2011 17:10 · Личное сообщение · #3 |
|
Создано: 08 октября 2011 17:46 · Личное сообщение · #4 |
|
Создано: 08 октября 2011 18:30 · Поправил: Veliant · Личное сообщение · #5 не думаю что это полная прошивка. У армов код обычно начинается с нескольких прыжков векторов прерывания. Первые 0x40 байт какие-то сервисные данные, так же они встречаются после больших последовательностей FF, может указаны размеры областей и адреса или версии. Без даташита на процессор врядли что разберете т.к. данная прошивка работает как минимум с 3 областями памяти 0x40****, 0x10**** и 0x60**** Еще анализ осложняется перемешиванием arm и thumb инструкций, если первые еще можно увидеть 'на глаз', то вторые больше похожи на мусор в hex виде А большая часть (вся центральная область) вообще то ли пожатые данные, то ли для другого проца |
|
Создано: 08 октября 2011 20:44 · Личное сообщение · #6 |
|
Создано: 10 октября 2011 12:42 · Личное сообщение · #7 |
|
Создано: 10 октября 2011 13:36 · Личное сообщение · #8 rdr пишет: Часть кода в данном винте ещё лежит на блинах, подгружается при старте. Имелось в виду, что перед тем как прыгать в код прошивки, которую вы анализируете, выполняется еще какой-то базовый загрузчик, который лежит в IROM например, или другой области flash. В котором есть вектора прерываний. ----- Реверсивная инженерия - написание кода идентичного натуральному |
eXeL@B —› Электроника —› Исследование прошивки |