Как получить прямой доступ к памяти внешнего устройства?

Что я подразумеваю под прямым доступом к памяти? Да возьму хотя бы стандартный телефон в качестве примера. Т е, подключаем телефон (неважно какой, Xiaomi, iPhone...), а на хосте Linux/Unix мы получаем устройства в /dev:

 ~ # ls /dev
mmcblk0
mmcblk0p1
...
mmcblk0p30
 ~ # ls /dev/block/by-name -l
...
userdata -> /dev/mmcblk0p45
...

Вместо привычного Android устройства, думаю, логичнее подставить какое-нибудь небольшое устройство - кнопочный телефон, какую-нибудь камеру, или даже флэш-память мат. платы, куда записан БИОС. Вопрос: а как вообще (и можно ли) такое провернуть? Тогда хотя бы через dd можно сдампить разделы и в них покопаться).


Ответы (2 шт):

Автор решения: S.H.

Мне кажется, в современных устройствах это так не работает.

Дело даже не в том, что производители устройств, в среднем, против того, чтобы кто то "покопался" в их прошивке. И даже не в том, что Вы хотите получить прямой доступ не к застывшему слепку памяти, а к участкам оперативной памяти, на которых одновременно бегут разные процессы в исследуемом устройстве, которые могут изменть эту самую память.

В современных устройствах каждый "раздел" (а "раздел" создётся, буквально, по каждому чиху: приложеньку поставил - под неё создан новый логический раздел) представлет собой отдельную файловую систему, которая может быть зашифрована с использованием ключей, которые прошиты в системе аппаратно.

Мне кажется, что единственную пользу, которую я могу принести своим ответом - это дать Вам ссылку на статью об основах загрузки на ARM

→ Ссылка
Автор решения: eri

В случае роутеров и камер нужно найти пины UART и подключиться туда адаптером. При подключении питания прервать запуск и у вас будет U-BOOT или аналог на этой консоли. Прошивку выкачать оттуда обычно сложно потому как производитель хоть немного защищается, а вот записать новую можно через z-modem или tftp легко. Заливай туда более продвинутую версию загрузчика и можно читать.

Чтоб прочитать содержимое флешки на камере можно отпаять её и считать программатором. Если паять не вариант, то нужно найти обновление прошивки и перепаковать его добавив в автозагрузку telnet без пароля.

Для телефонов обычно нужно найти точку на плате и замкнуть её на корпус при подключении питания. Телефон будет в режиме прошивки и через специальную программу можно вычитать и записать всё

→ Ссылка