Как модчип переопределяет определенные сигналы?

Недавно я прочитал статью об оригинальной схеме защиты от копирования PSX и о том, как модчипы той эпохи были реализованы с использованием микроконтроллеров PIC. Потом возник этот вопрос, и я не смог найти удовлетворительного ответа ни в сети, ни среди коллег.

Насколько я знаю и видел на видео на ютубе, модчип устанавливается параллельно линиям ИС, которые хотят переопределить. Конкретные линии, к которым прикреплен модчип, конечно же, уже используются другим компонентом и не обрезаются. Следовательно, вы окажетесь в ситуации, когда две разные ИС пытаются управлять одними и теми же линиями.

В логике CMOS сигнал будет либо высоким (VDD), либо низким (GND). Это означает, что если модчип попытается что-то внедрить или оригинальная микросхема попытается связаться с целевым компонентом, это может привести к короткому замыканию или ситуации, когда оба компонента пытаются поднять эту линию на высокий уровень.

Итак, как модчип переопределяет определенные сигналы, по существу говоря целевому компоненту «используйте мои сигналы, а не оригиналы»?

Он просто гонит их сильнее, чем оригинальный чип.
@PlasmaHH Это может быть не так для некоторых модчипов. Я знаю, что есть некоторые, которые подают высокое напряжение или ток в линии, чтобы принудительно отключить другие устройства (например, обычный способ обойти чип блокировки Famicom/NES).

Ответы (1)

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

Если бы это было так просто/легко, как простое переопределение строк CMOS, то было бы совершенно тривиально создать модчип. Вы просто впитываете максимумы и форсируете минимумы, когда хотите, и кладете все, что пожелаете, на любые штифты или шины по своему желанию. К сожалению, большинство выходов CMOS имеют сопротивление «включено» 50 Ом или 25 Ом, либо к VCC, либо к GND, либо только к GND (в зависимости от того, является ли это выходом с открытым стоком или двухтактным выходом или нет). Микроконтроллеры PIC и AVR, например, имеют двухтактные выходы 25 Ом. В случае PIC, они действительно рассчитаны только на максимум ± 25 мА сток или источник на любом контакте и, вероятно, имеют такое же сопротивление, как и другие выходные контакты CMOS, переопределение одной из линий потребует параллельного соединения нескольких контактов. Все это неисправности, с которыми может столкнуться большинство КМОП-чипов.терпеть, если состояние достаточно короткое, но нельзя ожидать, что чип выживет в чем-то подобном, если это происходит снова и снова. Если вы превысите абсолютные максимальные рейтинги, то вы попали на территорию, где чип действительно может быть поврежден. Даже если он сработает один раз или сработает несколько раз, он может медленно разрушать какой-то оксидный слой или вызывать инжекцию горячего носителя или множество других механизмов износа, которые в конечном итоге приведут к выходу из строя этого вывода ввода-вывода.

Так что, как сказал бы Боромир, « нельзя просто переопределить сигналы CMOS » .

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

Поговорим о модчипах PS1. Защита от копирования PS1 работала, пытаясь прочитать короткую строку из 4 символов из самой внутренней части компакт-диска, встроенную в бороздку вобуляции, известную как код вобуляции или просто данные канавки вобуляции . Это в основном отслеживающая информация - это то, что позволяет считывающей головке компакт-диска знать, где она находится на диске, поддерживать постоянную угловую скорость и тому подобное. На музыкальном компакт-диске данные вобуляции обычно считываются на подканале и содержат временную позицию для этой области на компакт-диске. Именно здесь на проигрывателе компакт-дисков генерируется время ЧЧ:ММ:СС, фактически читая его с компакт-диска.

Важным моментом в отношении данных вобл-канавки является то, что их нельзя было «прожечь» на диск — они были встроены в физическую структуру самого компакт-диска. На самом деле, он должен уже присутствовать даже для записи компакт-диска, а когда вы покупаете диски CD-R, это диски, на которых уже есть предварительно созданные данные канавки вобуляции, чтобы ваш привод записи компакт-дисков знал, где на самом деле разместить ямки на диске, когда вы сожги это. Другими словами, он должен был быть отпечатан на самом заводе, производящем физические компакт-диски.

Похоже на довольно надежное средство защиты от копирования, верно? Что ж, был один критический недостаток, и это была простота защиты на каждом этапе, кроме фактического чтения физического носителя.

Было несколько разных строк, которые защита от копирования искала в этих данных канавки вобуляции, и они соответствовали разным регионам, что позволяло использовать как защиту от копирования, так и защиту регионов в одном механизме. Строка была «SCEA» для региона 1 (SCEA просто был инициализмом для Sony Computer Entertainment America). Были и другие, например SCEE (то же самое, но для Европы), но пока контроллер дисковода находил эту строку, PS1 продолжала загрузку диска.

Данные канавки вобуляции передаются в виде последовательного битового потока при чтении диска. Это гораздо более низкая плотность, чем фактически записанные данные на диске, и в случае с PS1 это был последовательный поток со скоростью 250 бит/с. Довольно медленный, медленнее даже модема на 300 бод.

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

Таким образом, основной ЦП PS1 получил этот битовый поток от контроллера дисковода по определенному подканалу — в данном случае подканалу Q — который имеет свои собственные линии CLK и DATA. Удобно, что это была двунаправленная шина - ЦП также использовал те же самые линии CMOS, чтобы сообщить микросхеме привода, из какой области диска следует считывать данные подканала.

Итак, как выполнить инъекцию, не переопределяя ни одну из этих микросхем?

Ты жульничаешь.

Самые ранние модчипы использовали довольно грубый метод. На самом деле они манипулировали транзистором, который напрямую управлял лазером. Это даже не цифровое решение, оно работало на одной аналоговой части всего этого.

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

Кроме того, из соображений безопасности к датчику двери был подключен «диодный стробирующий» транзистор, который полностью отключал бы соединение контроллера компакт-диска с лазерными диодами, выключая их, гарантируя, что никто не может случайно подвергнуться воздействию лазера, когда дверь закрыта. был открыт.

Таким образом, мод-чип использовал это, чтобы отключить лазерный диод, когда он обычно должен быть включен, в результате чего контроллер ничего не считывал из данных о колебаниях внутренней дорожки, и без усиления сигнала мод-чип мог свободно манипулировать фотографией считывающей головки. транзистор напрямую с помощью цифрового контакта. Это будет колебать фактический датчик дисковода компакт-дисков в правильном направлении, чтобы прочитать строку защиты от копирования. И в этот момент, поскольку вы внедрили это, по сути, в фактическую физическую аналоговую конечную точку всей сигнальной цепочки, все с этого момента абсолютно нормально и родно. Фактические данные отправляются с контроллера привода компакт-дисков, и это правильные данные для реального диска Sony PS1 нужного региона.

Как только это будет сделано, модчип просто снова включит светодиодный затворный транзистор, и нормальная работа возобновится, как будто ничего и не произошло.

Это всего лишь один из способов. Другой метод, используемый чипами PS1, был чисто цифровым и просто использовал тайминги. Он будет прослушивать последовательную линию подканала Q, о которой я упоминал ранее, а входной контакт с высоким импедансом может прослушивать линию CMOS без какого-либо реального вмешательства в ее работу (по крайней мере, в обычном режиме), так что не беспокойтесь. А учитывая, насколько медленным был подканал q, он вполне соответствовал возможностям простого 8-мегагерцового микроконтроллера.

Он будет ждать, пока ЦП запросит данные защиты от копирования на подканале Q, затем немного подождет и введет правильный битовый поток в качестве поддельного ответа обратно в ЦП на последовательной шине подканала q. Конечно, микросхема управления CD-приводом все еще была там, но она была занята перемещением считывающей головки в нужное положение, поиском нужного места на диске, позволяя исправлению ошибок делать свое дело. Все эти задачи занимают целую вечность в мкК. Черт возьми, они занимают какое-то время в масштабах времени людей . Таким образом, эти модчипы будут использовать синхронизацию, чтобы просто вводить цифровые сигналы, когда они могут быть уверены, что им НЕ НУЖНО переопределять что-либо еще.

Если вам интересно, вы можете увидеть, как именно работали оба этих метода здесь (лазерный диодный строб) и здесь (инъекция SUBQ) .

Еще один метод, популярный в различных модчипах, включает в себя запуск сброса на каком-то чипе — обычно основном процессоре или каком-то чипе контроллера, или на том и другом — и опять же, каким-то образом используя это, чтобы либо действовать как самозванец одного чипа, в то время как другой временно деактивирован или просто для того, чтобы каким-то образом использовать время, которое открывается. Можно с уверенностью сказать, что вам не придется ничего переопределять в строке RESET чипа, поскольку ничто не будет указывать ему на сброс (обычно).

И я уверен, что есть и десятки других хитрых уловок. И будут появляться новые, придуманные ловкими хакерами. Не во имя пиратства, а просто чтобы посмотреть, смогут ли они, и узнать, как работает устройство. Я думаю, что обычно люди, которые разбираются в этом, просто развлекаются, разгадывая головоломку. По крайней мере, поэтому я бы сделал это.

Это было очень информативно, спасибо! Я нашел модчипы PsNee и MM3, а также другие ресурсы, но я так и не понял, что именно они делают. Если кто-то хочет прочитать что-то еще о PSX, вот хорошая ссылка: oldcrows.net/mcc3.html