Сейчас на форуме: johnniewalker, NIKOLA (+7 невидимых)

 eXeL@B —› Крэки, обсуждения —› PowerPC e200 & IDA Pro - как дизассемблировать *.bin
Посл.ответ Сообщение

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

Создано: 13 января 2017 16:36 · Поправил: Enclave
· Личное сообщение · #1

Всем привет.
Прошу подсказки, возможно я чего то не понимаю.

Имею файл прошивки в *.bin, готовый к заливке в процессор.

Набор команд в нём используется VLE (32 бита).
IDA никак не хочет правильно дизассемблировать код, хотя точно такой же код формата *.elf без проблем понимает.

В качестве примера возьмем вот этот файл (см. вложение).

Вот как он открывается в IDA:

Code:
  1. .text_vle:00001000
  2. .text_vle:00001000             DisableWatchdog:  # CODE XREF: main+12p
  3. .text_vle:00001000                               # DATA XREF: .init:00000044o ...
  4. .text_vle:00001000 70 7F E7 00      e_lis     r3, -0x100    # Load Immediate Shifted
  5. .text_vle:00001004 20 93            se_addi   r3, 0xA       # Add Immediate
  6. .text_vle:00001006 71 1F E7 F4      e_lis     r8, -0xC      # Load Immediate Shifted
  7. .text_vle:0000100A 54 68 80 00      e_stw     r3, -0x8000(r8) # Store Word
  8. .text_vle:0000100E 7D 70 FA A6      mfspr     r11, hid0     # Move from Special Purpose Register
  9. .text_vle:00001012 71 97 7F FF      e_li      r12, -0x4001  # Load Immediate
  10. .text_vle:00001016 71 9F D7 FF      e_or2is   r12, -1       # OR (2 operand) Immediate Shifted
  11. .text_vle:0000101A 7D 8B 58 38      and       r11, r12, r11 # AND
  12. .text_vle:0000101E 7D 70 FB A6      mtspr     hid0, r11     # Move to Special Purpose Register
  13. .text_vle:00001022 71 80 E0 00      e_lis     r12, 0        # Load Immediate Shifted
  14. .text_vle:00001026 7D 94 53 A6      mtspr     0x154, r12    # Move to Special Purpose Register
  15. .text_vle:0000102A 00 04           se_blr                  # Branch unconditionally
  16. .text_vle:0000102A             # End of function DisableWatchdog



Далее если взять этот же код в двоичном виде (выдрав байты из *.elf), то IDA может только так:

Code:
  1. ROM:00001000
  2. ROM:00001000             # Segment type: Pure code
  3. ROM:00001000                .section "ROM"
  4. ROM:00001000 70 7F E7 00       andi.     r31, r3, 0xE700
  5. ROM:00001004 20 93 71 1F       subfic    r4, r19, 0x711F
  6. ROM:00001008 E7 F4 54 68       lfdp      f31, 0x5468(r20)
  7. ROM:0000100C 80 00 7D 70      lwz       r0, 0x7D70
  8. ROM:0000100C      # ------------------------------------------
  9. ROM:00001010 FA           .byte 0xFA # ·
  10. ROM:00001011 A6           .byte 0xA6 # ж
  11. ROM:00001012 71           .byte 0x71 # q
  12. ROM:00001013 97           .byte 0x97 # Ч


Т.е., IDA похоже не понимает, что набор команд тут VLE, хотя опцию соответствующую выбираю в настройках процессора.

Каким же образом мне корректно дизассемблировать прошивку, ведь она только в *.bin и есть? Код там такой же, я проверил.

d2e9_13.01.2017_EXELAB.rU.tgz - flash.rar




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 13 января 2017 16:57 · Поправил: reversecode
· Личное сообщение · #2

Options -> Analysis -> Processor specific analysis options -> VLE[x]



Ранг: 58.3 (постоянный), 50thx
Активность: 0.040.08
Статус: Участник

Создано: 13 января 2017 17:00 · Поправил: DrVB_5_6
· Личное сообщение · #3

Лучше бы .bin файл вложил, а не ELF.

Enclave пишет:
Приложил в формате *.mot. Пойдет?


Не, я сейчас побегу разбираться, что это за формат!!!
Ясно же написано было .bin!!!



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

Создано: 13 января 2017 17:10 · Поправил: Enclave
· Личное сообщение · #4

DrVB_5_6

Приложил в формате *.mot. Пойдет? Код тот же самый, что и в эльф.

reversecode

Включаю, не помогает.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 13 января 2017 17:22
· Личное сообщение · #5

Alt+G vle в 1
и так на каждой строчке



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

Создано: 13 января 2017 17:26 · Поправил: Enclave
· Личное сообщение · #6

Не, я сейчас побегу разбираться, что это за формат!!!
Ясно же написано было .bin!!!


Так не надо разбираться, это совсем не секретный формат. IDA его понимает.

Сконвертил. Вот в BIN:



[img]img/attach.gif"> <SCRIPT type=text/javascript>dfl("files/","c73d_13.01.2017_EXELAB.rU.tgz");</SCRIPT> - FLASH.BIN

Добавлено спустя 6 минут
reversecode

Похоже, помогло. <img src="img/smilies/s1.gif[/img]

Оказалось достаточно выбрать vle=1 в самом начале сегмента.

Спасибо огромное!


 eXeL@B —› Крэки, обсуждения —› PowerPC e200 & IDA Pro - как дизассемблировать *.bin
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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