Как получить прямой доступ к памяти внешнего устройства?
Что я подразумеваю под прямым доступом к памяти? Да возьму хотя бы стандартный телефон в качестве примера. Т е, подключаем телефон (неважно какой, Xiaomi, iPhone...), а на хосте Linux/Unix мы получаем устройства в /dev:
~ # ls /dev
mmcblk0
mmcblk0p1
...
mmcblk0p30
~ # ls /dev/block/by-name -l
...
userdata -> /dev/mmcblk0p45
...
Вместо привычного Android устройства, думаю, логичнее подставить какое-нибудь небольшое устройство - кнопочный телефон, какую-нибудь камеру, или даже флэш-память мат. платы, куда записан БИОС. Вопрос: а как вообще (и можно ли) такое провернуть? Тогда хотя бы через dd можно сдампить разделы и в них покопаться).
Ответы (2 шт):
Мне кажется, в современных устройствах это так не работает.
Дело даже не в том, что производители устройств, в среднем, против того, чтобы кто то "покопался" в их прошивке. И даже не в том, что Вы хотите получить прямой доступ не к застывшему слепку памяти, а к участкам оперативной памяти, на которых одновременно бегут разные процессы в исследуемом устройстве, которые могут изменть эту самую память.
В современных устройствах каждый "раздел" (а "раздел" создётся, буквально, по каждому чиху: приложеньку поставил - под неё создан новый логический раздел) представлет собой отдельную файловую систему, которая может быть зашифрована с использованием ключей, которые прошиты в системе аппаратно.
Мне кажется, что единственную пользу, которую я могу принести своим ответом - это дать Вам ссылку на статью об основах загрузки на ARM
В случае роутеров и камер нужно найти пины UART и подключиться туда адаптером. При подключении питания прервать запуск и у вас будет U-BOOT или аналог на этой консоли. Прошивку выкачать оттуда обычно сложно потому как производитель хоть немного защищается, а вот записать новую можно через z-modem или tftp легко. Заливай туда более продвинутую версию загрузчика и можно читать.
Чтоб прочитать содержимое флешки на камере можно отпаять её и считать программатором. Если паять не вариант, то нужно найти обновление прошивки и перепаковать его добавив в автозагрузку telnet без пароля.
Для телефонов обычно нужно найти точку на плате и замкнуть её на корпус при подключении питания. Телефон будет в режиме прошивки и через специальную программу можно вычитать и записать всё