Исследование прошивки

Тема в разделе "WASM.ELECTRONICS", создана пользователем rdr, 8 окт 2011.

  1. rdr

    rdr New Member

    Публикаций:
    0
    Регистрация:
    8 окт 2011
    Сообщения:
    3
    Здравствуйте!
    имеется прошивка 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 ; ---------------------------------------------------------------------------
    ROM:000000E4
    ROM:000000E4 loc_E4 ; CODE XREF: ROM:000000D8j
    ROM:000000E4 LDR R2, =0x11223344
    ROM:000000E8 CMP R1, R2
    ROM:000000EC BNE loc_130
    ROM:000000F0 LDR R1, =dword_13FF8
    ROM:000000F4 LDR R1, [R1]
    ROM:000000F8 LDR R2, =0xAABBCCDD
    ROM:000000FC CMP R1, R2
    ROM:00000100 BEQ loc_12C
    ROM:00000104 LDR R2, =0xA1B2C3D4
    ROM:00000108 CMP R1, R2
    ROM:0000010C BNE loc_118
    ROM:00000110 MOV R0, #6
    ROM:00000114 B loc_130
    ROM:00000118 ; ---------------------------------------------------------------------------
    ROM:00000118
    ROM:00000118 loc_118 ; CODE XREF: ROM:0000010Cj
    ROM:00000118 LDR R2, =0x66778899
    ROM:0000011C CMP R1, R2
    ROM:00000120 BNE loc_130
    ROM:00000124 MOV R0, #5
    ROM:00000128 B loc_130
    ROM:0000012C ; ---------------------------------------------------------------------------
    ROM:0000012C
    ROM:0000012C loc_12C ; CODE XREF: ROM:00000100j
    ROM:0000012C MOV R0, #3
    ROM:00000130
    ROM:00000130 loc_130 ; CODE XREF: ROM:000000E0j
    ROM:00000130 ; ROM:000000ECj ...
    ROM:00000130 BLX sub_1964
    ROM:00000134 LDR R1, =dword_13FF4
    ROM:00000138 LDR R1, [R1]
    ROM:0000013C LDR R2, =0xDFAADFAA
    ROM:00000140 CMP R1, R2
    ROM:00000144 BNE loc_14C
    ROM:00000148 B loc_158
    ROM:0000014C ; ---------------------------------------------------------------------------
    ROM:0000014C
    ROM:0000014C loc_14C ; CODE XREF: ROM:00000144j
    ROM:0000014C MOV R0, #0
    ROM:00000150 LDR R1, =word_13F8E
    ROM:00000154 STRH R0, [R1]
    ROM:00000158
    ROM:00000158 loc_158 ; CODE XREF: ROM:00000148j
    ROM:00000158 MOV R0, #0
    ROM:0000015C LDR R1, =dword_13FF8
    ROM:00000160 STR R0, [R1]
    ROM:00000164 LDR R1, =dword_13FF4
    ROM:00000168 STR R0, [R1]
    ROM:0000016C BLX sub_4FA
    ROM:00000170 BLX sub_19BC
    ROM:00000174 MOV R1, #0
    ROM:00000178 CMP R0, R1
    ROM:0000017C BEQ loc_190
    ROM:00000180 LDR R0, =loc_40
    ROM:00000184 LDR R1, [R0]
    ROM:00000188 LDR LR, =unk_8390
    ROM:0000018C BX R1
    ROM:00000190 ; ---------------------------------------------------------------------------
    ROM:00000190
    ROM:00000190 loc_190 ; CODE XREF: ROM:0000017Cj
    ROM:00000190 BLX 0x23CA2A
    ROM:00000194 B loc_2BF8
    ROM:00000198
    ROM:00000198 ; =============== S U B R O U T I N E =======================================
    ROM:00000198
    ROM:00000198
    ROM:00000198 sub_198 ; CODE XREF: ROM:000000A4p
    ROM:00000198 ; ROM:000000B0p ...
    ROM:00000198 ADD R1, R1, #3
    ROM:0000019C MOVS R1, R1,LSR#2
    ROM:000001A0 BEQ locret_1B8
    ROM:000001A4 MOV R2, #0
    ROM:000001A8
    ROM:000001A8 loc_1A8 ; CODE XREF: sub_198+1Cj
    ROM:000001A8 STR R2, [R0]
    ROM:000001AC ADD R0, R0, #4
    ROM:000001B0 SUBS R1, R1, #1
    ROM:000001B4 BNE loc_1A8
    ROM:000001B8
    ROM:000001B8 locret_1B8 ; CODE XREF: sub_198+8j
    ROM:000001B8 BX LR
    ROM:000001B8 ; End of function sub_198
     
  2. rdr

    rdr New Member

    Публикаций:
    0
    Регистрация:
    8 окт 2011
    Сообщения:
    3
    сам понял что написал?
     
  3. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    rdr
    Это бот. Здесь такое бывает.
    Просто напишите репорт.
     
  4. rdr

    rdr New Member

    Публикаций:
    0
    Регистрация:
    8 окт 2011
    Сообщения:
    3
    DEEP
    сразу не понял )
    по моему вопросу можете подсказать?
     
  5. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    rdr
    Увы, с ARM пока что не работал (хотя, думаю, всё впереди).
    Назначение отдельных команд в принципе по мнемоникам понимаю, однако опыта у меня в таких делах — нуль.
     
  6. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    averushka
    иди выпей валерьяночки, а то кондражка прошибёт ненароком, при такой-то ранимости :3
     
  7. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    rdr
    Прежде чем браться за исследование прошивки под какой-либо процессор, неплохо было бы изучить этот самый процессор. Очень похоже, что у этой прошивки отсутствует корректная таблица векторов прерываний; возможно, в процессе прошивки самой прошивки прошивальщик сам создаст правильную таблицу. Осмысленный же код начинается здесь с адреса 40 -- там явно идут загрузки начальных указателей стеков для различных режимов процессора.