Branch и переназначение сегментов в IDA

Тема в разделе "WASM.BEGINNERS", создана пользователем KaperGL, 19 апр 2021.

  1. KaperGL

    KaperGL New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2021
    Сообщения:
    14
    Пользую IDA 6.8. Столкнулся с некоторыми проблемами. Первая - это переназначение сегментов памяти. Поскольку в архитектуре HCS12 подразумевается индивидуальная разметка памяти, то после сброса в момент инициализации сегменты приобретают новые виртуальные адреса.
    [​IMG]
    https://cloud.mail.ru/public/qXdn/cjB1Tj7Ve
    Например здесь EEprom изначально занимает пространство 0х1000:0х1400, а после инициализации проецируется на область 0х3800:0х4000. Создавая секцию вручную я, естественно, не получаю в ней данных из оригинального епрома.

    Второй момент это указатели переходов.

    [​IMG]
    https://cloud.mail.ru/public/yd13/Lv6gmbnXA
    Я определил границы функции, но не могу указать ветвления откуда мы попадаем сюда, да и те же переходы внутри функции подсвечены красным (хотя они рассчитаны правильно).

    С первым вопросом я могу конечно поступить радикально, скопировав данные принудительно либо перезагрузить изначально с нужными адресами. А вот с ссылками хотелось бы разобраться особенно, потому без них потеряться можно, да и график зависимости не строится.
     
  2. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Это скорей всего баг. Почему бы на пиратскую иду более свежих версий не перейти? Как минимум rebase там вроде бы появился.
     
  3. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Альтернативно можно попробовать заюзать Cutter с декомпилятором от Ghidra, если он нужен. Но воркфлоу у него немного не такой, как у Иды, придется привыкать какое-то время.
     
  4. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Осталось найти в радаре эту архитектуру:
    Код (Text):
    1. >rasm2 -L
    2. _dAe  8 16       6502        LGPL3   6502/NES/C64/Tamagotchi/T-1000 CPU
    3. adAe  8          8051        PD      8051 Intel CPU
    4. _dA_  32         amd29k      LGPL3   AMD 29k RISC CPU (by deroad)
    5. _dA_  16 32      arc         GPL3    Argonaut RISC Core
    6. a___  16 32 64   arm.as      LGPL3   as ARM Assembler (use ARM_AS environment) (by pancake)
    7. adAe  16 32 64   arm         BSD     Capstone ARM disassembler
    8. _dA_  16 32 64   arm.gnu     GPL3    Acorn RISC Machine CPU
    9. _d__  16 32      arm.winedbg LGPL2   WineDBG's ARM disassembler
    10. adAe  8 16       avr         GPL     AVR Atmel
    11. adAe  16 32 64   bf          LGPL3   Brainfuck (by pancake, nibble) v4.0.0
    12. _dA_  32         chip8       LGPL3   Chip8 disassembler
    13. _dA_  16         cr16        LGPL3   cr16 disassembly plugin
    14. _dA_  32         cris        GPL3    Axis Communications 32-bit embedded processor (by pancake)
    15. adA_  32 64      dalvik      LGPL3   AndroidVM Dalvik
    16. ad__  16         dcpu16      PD      Mojang's DCPU-16
    17. _dA_  32 64      ebc         LGPL3   EFI Bytecode (by Fedor Sakharov)
    18. adAe  16         gb          LGPL3   GameBoy(TM) (z80-like) (by condret)
    19. _dAe  16         h8300       LGPL3   H8/300 disassembly plugin
    20. _dAe  32         hexagon     LGPL3   Qualcomm Hexagon (QDSP6) V6 (by xvilka)
    21. _d__  32         hppa        GPL3    HP PA-RISC
    22. _dAe             i4004       LGPL3   Intel 4004 microprocessor
    23. _dA_  8          i8080       BSD     Intel 8080 CPU
    24. adA_  32         java        Apache  Java bytecode
    25. _d__  32         lanai       GPL3    LANAI
    26. _d__  8          lh5801      LGPL3   SHARP LH5801 disassembler
    27. _d__  32         lm32        BSD     disassembly plugin for Lattice Micro 32 ISA (by Felix Held)
    28. _dA_  32         m68k        BSD     Capstone M68K disassembler
    29. _dA_  8 32       m680x       BSD     Capstone M680X Disassembler
    30. _dA_  32         malbolge    LGPL3   Malbolge Ternary VM (by condret)
    31. _dA_  32         mcore       LGPL3   Motorola MCORE disassembler
    32. _d__  16         mcs96       LGPL3   condrets car
    33. adAe  16 32 64   mips        BSD     Capstone MIPS disassembler
    34. adAe  32 64      mips.gnu    GPL3    MIPS CPU
    35. _dA_  16         msp430      LGPL3   msp430 disassembly plugin
    36. _dA_  32         nios2       GPL3    NIOS II Embedded Processor
    37. _dA_  32         or1k        LGPL3   OpenRISC 1000
    38. _dAe  8          pic         LGPL3   PIC disassembler
    39. _dAe  32 64      ppc         BSD     Capstone PowerPC disassembler (by pancake)
    40. _dA_  32 64      ppc.gnu     GPL3    PowerPC
    41. _dA_  32         propeller   LGPL3   propeller disassembly plugin
    42. _dA_  32 64      riscv       GPL     RISC-V
    43. _dAe  32         rsp         LGPL3   Reality Signal Processor
    44. _dAe  32         sh          GPL3    SuperH-4 CPU
    45. _dA_  8 16       snes        LGPL3   SuperNES CPU
    46. _dAe  32 64      sparc       BSD     Capstone SPARC disassembler
    47. _dA_  32 64      sparc.gnu   GPL3    Scalable Processor Architecture
    48. _d__  16         spc700      LGPL3   spc700, snes' sound-chip
    49. _dA_  32         sysz        BSD     SystemZ CPU disassembler
    50. _dA_  32         tms320      LGPLv3  TMS320 DSP family (c54x,c55x,c55x+,c64x)
    51. _d__  32         tms320c64x  BSD     Capstone TMS320c64x disassembler
    52. _d__  32         tricore     GPL3    Siemens TriCore CPU
    53. _dAe  32         v810        LGPL3   v810 disassembly plugin (by pancake)
    54. _dAe  32         v850        LGPL3   v850 disassembly plugin
    55. _dAe  8 32       vax         GPL     VAX
    56. adAe  32         wasm        MIT     WebAssembly (by cgvwzq) v0.1.0
    57. _dA_  32         ws          LGPL3   Whitespace esotheric VM
    58. a___  16 32 64   x86.as      LGPL3   Intel X86 GNU Assembler
    59. _dAe  16 32 64   x86         BSD     Capstone X86 disassembler
    60. a___  16 32 64   x86.nasm    LGPL3   X86 nasm assembler
    61. a___  16 32 64   x86.nz      LGPL3   x86 handmade assembler
    62. _dA_  16         xap         PD      XAP4 RISC (CSR)
    63. _dA_  32         xcore       BSD     Capstone XCore disassembler (by pancake)
    64. _dAe  32         xtensa      GPL3    XTensa CPU
    65. adA_  8          z80         GPL     Zilog Z80 (by condret)
    И нет, это не м68. Кстати гидра как гидра, а не как довесок, поддерживает.
     
  5. KaperGL

    KaperGL New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2021
    Сообщения:
    14
    Да, только в самой Гидре есть и то без поддержки XGate, по этому на Иде пока и остановился.
     
  6. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Если я правильно все понял, xgate это альтернативный набор инструкций/способ кодирования инструкций. Гидра его поддерживает. Надо выделить область памяти (в листинге, не разобранную, иначе получится конфликт) -> ПКМ -> Set register value -> XGATE -> 1 -> ОК. После этого разобрать.
     
  7. KaperGL

    KaperGL New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2021
    Сообщения:
    14
    Да, XGate это второе ядро контроллера со своими директивами, инструкциями, отсюда и имеет свои регистры и стек.
    Попробую Гидру, спасибо. Параллельно сейчас уже курю вопрос о написании модулей IDA. Вроде как на примере NIOS разжовано более-менее. К тому же мне это нужно не на один раз, задача отломать много фрискейлов hcs12/12x/tricore, поэтому начал со дна. Уже подумывал над своим декомпилятором, который даст мне больше возможности в дальнейшем.
     
  8. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Смысла под иду что-то писать я не вижу. Делай плугины под гидру, там и декомпиль и солвер и всё будет. У иды катастрофически мало возможностей для анализа кода, особенно если речь не про 6 основных архитектур, для которых выпускают навесные декомпили. Когда-то кратенько описывал в чем между ними разница.
     
  9. KaperGL

    KaperGL New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2021
    Сообщения:
    14
    Прочитал, пример я понял. Как я понимаю 9.2.2 актуальная на данный момент?
     
  10. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    9.2.3 у них на сайте https://ghidra-sre.org
     
  11. KaperGL

    KaperGL New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2021
    Сообщения:
    14
    Тогда чуть позже. Сувался несколько раз к ним, нет доступа (Е403)
     
  12. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Гугли "Opera VPN", ставь галку в настройках, разрешающую VPN, включай слева от адресной строки. Ну или любым другим доступным способом, это не запрет со стороны РКН, сами АНБшники русские айпи адреса не любят.
     
  13. KaperGL

    KaperGL New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2021
    Сообщения:
    14
    Принял.