• XSS.stack #1 – первый литературный журнал от юзеров форума

Эмуляторы микроконтроллеров для запуска прошивок?

dunkel

(L1) cache
Пользователь
Регистрация
29.06.2023
Сообщения
921
Реакции
1 102
Гарант сделки
1
Депозит
0.012 Ł
Интересует как разработчики iot устройств под LN882 или BK7231N дебажат и тестируют свои прошивки. Вытащил прошивку одного iot устройства, хочется запустить ее на эмуляторе и посмотреть по тактам что происходит в памяти, но я так понял что в природе не существует программных эмуляторов этих soc, нашел только для ESP32.
Тоесть единственный вариант - покупать Development Kit с нужным чипом и через JTAG, SWD и UART дебажить?
p.s Unicorn Engine и Avatar² скорее всего не подойдут. ИИ предлагает на QEMU запустить эмулятор ARM Cortex-M4, но очень сомневаюсь что прошивка хотя бы запуститься
 
Not my usual chipset, so take this with a grain of salt: why not run until the first MMIO hit, dump state & enough to lift it into Ghidra for a call tree view. 1-2 hours tops.
 
I dont quite understand how to implement this
hooks UC_HOOK_MEM_*_UNMAPPED + bails out on the first hit: https://gist.github.com/gerph/266ec82dbeac90ad535ea69307981a8d
background on Unicorn’s unmapped access hooks + pain points: https://github.com/unicorn-engine/unicorn/issues/565
an "alternative" MMIO implementation with the same stop on access trick: https://github.com/unicorn-engine/unicorn/issues/1101

Had to wade through my ocean of bookmarks to find these.
They're overkill, you won't need the full hack to stop the CPU at the very 1st periph access: just set up an unmapped memory hook -> halt -> dump state.bin
I recommend reading them.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Тоесть единственный вариант - покупать Development Kit с нужным чипом и через JTAG, SWD и UART дебажить?
Как правило весь "встраиваемый" софт при разработке отлаживается непосредственно на плате при помощи JTAG'а или просто миганиями светодиодов в нужных точках программы.
 
Как правило весь "встраиваемый" софт при разработке отлаживается непосредственно на плате при помощи JTAG'а или просто миганиями светодиодов в нужных точках программы.
My suggestion wasn’t meant to replace that. It’s just a quick offtarget pass: run the blob until the first unmapped MMIO & dump RAM/flash & lift it into ghidra. Useful when you don’t yet have the board on your desk or you’re trying to map the controlflow skeleton before soldering test leads. Once the call tree is clear, you’re back on hardware for the real work.
 
если чипы ARM, то покупать программатор типа st-link и дебажить с помощью SWD через gdb.
liveoverflow делал видео об этом, когда реверсил криптокошелек:
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх