Чтение оперативной памяти извне в работающей системе путем перехвата шины памяти или замены микросхем оперативной памяти?

Интересно, можно ли модифицировать бытовую электронную систему (телевизор, телефон, встроенное устройство и т. д.), чтобы можно было читать и, возможно, записывать содержимое микросхем ОЗУ во время работы системы, без добавления какого-либо программного обеспечения в целевое устройство.

Я не очень хорошо разбираюсь в аппаратном обеспечении, но я думаю, что решение может включать в себя пайку чего-то на контактах микросхемы ОЗУ, чтобы сигналы перехватывались, а затем «воспроизведение» записи во внутреннюю ОЗУ, эффективно создавая синхронизированную копию. оперативной памяти устройства.

Внутренняя оперативная память может иметь второй порт, который позволит пользователю читать ее, например, через контроллер, открывающий интерфейс USB-накопителя.

В качестве альтернативы, без второго порта, контроллер мог бы, возможно, предоставить исходному устройству доступ к внутренней ОЗУ, когда оно записывает, и вместо этого заменить операции чтения операциями чтения, выданными пользователем для проверки ОЗУ во время чтения.

Или для чипов DRAM, обновляемых контроллером, он может отфильтровывать весь доступ, кроме операций записи, используемых для обновления DRAM (путем обнаружения обновления и последующего использования таймера), а затем пропускать контрольные чтения в то время, когда обновление DRAM не происходит.

Альтернативный дизайн может состоять в том, чтобы заменить микросхему ОЗУ двухпортовой ОЗУ, а затем подключить исходный порт к целевому устройству, а другой порт - к контроллеру, позволяющему читать или записывать его.

Эта последняя конструкция также позволит записывать ОЗУ в дополнение к чтению.

В качестве альтернативы можно было бы попытаться обработать поток сигналов ОЗУ в программном обеспечении, а не отправлять его на микросхему ОЗУ, но кажется, что это будет намного сложнее и дороже из-за высокой скорости передачи данных (что может потребовать разделения потока и обработки). это с кластером машин).

А именно вопросы:

  1. Это вообще возможно?

  2. Возможно ли сделать это на серийно выпускаемых материнских платах с припаянными микросхемами ОЗУ, которые можно найти в бытовых электронных устройствах?

  3. Есть ли готовые устройства, которые могут это сделать?

  4. Если нет, то каким будет самый дешевый/простой способ создания единственной копии такого устройства с поддержкой только чтения? Как насчет поддержки по записи? (при условии, что нужно купить все, что выходит за рамки целевого устройства и обычного ПК)

Это общий вопрос, касающийся чипов SRAM, DDR, LPDDR, GDDR, Rambus и т. д.

Большое количество бытовых электронных устройств даже не использует дискретные микросхемы оперативной памяти.
Вы имеете в виду, что процессор / SoC и оперативная память находятся на одном чипе? Я спрашиваю о тех, где этого нет, и на материнке стоят отдельные микросхемы оперативной памяти.
Может представлять интерес использованный здесь подход — scanlime.org/2009/09/dsi-ram-tracing . Насколько я понимаю на стороне "чтения" она нюхает шину памяти и исходя из этого может реконструировать содержимое ОЗУ в любой момент (не обязательно в режиме реального времени), а на стороне записи она делает "человек посередине" атака типа путем отключения выбора чипа ОЗУ, когда видны чтения с определенных адресов, а затем установка шины на любое желаемое значение.
@ IgnacioVazquez-Abrams - это, как правило, только самые маленькие системы. Все, что требует мегабайт памяти, будет использовать внешнюю оперативную память, хотя в некоторых случаях сегодня это может быть в формате пакет-на-пакете.
Неожиданным поводом для беспокойства по поводу самого вопроса будет вероятность наличия встроенного кеша. Это немного усложнило бы мониторинг чтения, но сделало бы отслеживание выполнения и подстановку данных очень сложным.

Ответы (1)

Это вообще возможно?

Ну, может быть, да.

Возможно ли сделать это на серийно выпускаемых материнских платах с припаянными микросхемами ОЗУ, которые можно найти в бытовых электронных устройствах?

Определенно нет. Подключить провода к линиям между ЦП и ОЗУ, не нарушая связи, чрезвычайно сложно. Чем быстрее автобус, тем сложнее это сделать. Замена чипов RAM на что-то (вероятно, будет достаточно большего FPGA + внешней RAM), что «имитирует» чип RAM в модифицированной системе и делает с данными все, что вы хотите, вероятно, намного более осуществимо.

Есть ли готовые устройства, которые могут это сделать?

Скорее всего нет.

Не будет ли замена иметь обратную сторону в виде дополнительной задержки, которой может быть достаточно, чтобы заставить контроллер памяти сдаться или иным образом заметно изменить целевое поведение синхронизации? Кроме того, если подключение проводов невозможно, возможно, более целесообразным будет обнаружение магнитного поля, создаваемого током в дорожке материнской платы? (наверное нет, но без понятия)
@chippy: обычно это не заставит устройство «сдаться»; ожидается, что большинство устройств RAM будут предоставлять данные в течение определенного периода времени после получения запроса, и будет предполагаться, что они поместили действительные данные на свои выходные контакты. Если задержка слишком велика, он не сможет этого сделать. С другой стороны, если добавить 3 нс к задержке с перехватом, можно использовать микросхему ОЗУ, которая на 3 нс быстрее, чем та, что изначально была в схеме, для компенсации.
@chippy: Если вы поместите «замену» достаточно близко к точкам подключения, вы можете сделать дополнительную задержку довольно небольшой. Несколько см не должны вызывать проблем (30 см = 1 нс). Обнаружение магнитного поля в диапазоне нескольких сотен МГц звучит для меня очень тернистой дорогой.