Сейчас на форуме: Dart Raiden, bedop66938, morgot (+6 невидимых)

 eXeL@B —› Электроника —› Исследование прошивки
Посл.ответ Сообщение

Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 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 ; ---------------------------------------------------------------------------
---отрезано----------------------



Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 08 октября 2011 14:43 · Поправил: SergX
· Личное сообщение · #2

Cмотри точку входа в PDF по процу.
Возможно она не фиксированная, а меняется в зависимости от конфигурации проца.



Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 08 октября 2011 17:10
· Личное сообщение · #3

PDF по винтовым процам отсутствуют в свободном доступе (



Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

Создано: 08 октября 2011 17:46
· Личное сообщение · #4

rdr пишет:
При выборе точки входа "ROM:00000000" получается следующий код который странно заканчивается на "ROM:00000028" .

Потому что это не код, а скорее всего данные.
На точку входа больше похоже ROM:00000040 - там как раз состояние процессора инициализируется через CPSR.



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 08 октября 2011 18:30 · Поправил: Veliant
· Личное сообщение · #5

не думаю что это полная прошивка. У армов код обычно начинается с нескольких прыжков векторов прерывания. Первые 0x40 байт какие-то сервисные данные, так же они встречаются после больших последовательностей FF, может указаны размеры областей и адреса или версии.
Без даташита на процессор врядли что разберете т.к. данная прошивка работает как минимум с 3 областями памяти 0x40****, 0x10**** и 0x60****
Еще анализ осложняется перемешиванием arm и thumb инструкций, если первые еще можно увидеть 'на глаз', то вторые больше похожи на мусор в hex виде
А большая часть (вся центральная область) вообще то ли пожатые данные, то ли для другого проца



Ранг: 13.9 (новичок), 1thx
Активность: 0.010
Статус: Участник

Создано: 08 октября 2011 20:44
· Личное сообщение · #6

я бы сказал что ROM:00000040 больше похожа на Reset_handler

Но вот самой таблицы векторов не видно..
Как правильно сказали - курим доки и смотрим что куда ремапится



Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 октября 2011 12:42
· Личное сообщение · #7

Veliant пишет:
не думаю что это полная прошивка.

Часть кода в данном винте ещё лежит на блинах, подгружается при старте.



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 10 октября 2011 13:36
· Личное сообщение · #8

rdr пишет:
Часть кода в данном винте ещё лежит на блинах, подгружается при старте.

Имелось в виду, что перед тем как прыгать в код прошивки, которую вы анализируете, выполняется еще какой-то базовый загрузчик, который лежит в IROM например, или другой области flash. В котором есть вектора прерываний.

-----
Реверсивная инженерия - написание кода идентичного натуральному



 eXeL@B —› Электроника —› Исследование прошивки
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати