С чего бы попроще начать? Ну, определённо с чего-то, что не будет заставлять голову болеть, даааааа...
В какой-то момент, когда я, скажем, занимался поиском смешных вещей, что подарят мне доступ к System Management Unit (SMU), наткнулся на одну забавную вещицу. Я совершенно случайно обнаружил для себя сисколл (ID 0x21 в Stage 2 загрузчике для версий 0.28.x.x), что закидывает ключики в Unified Memory Controller (UMC). Конкретно не вспомню, кто сисколлит это чудо, но точно кто-то из ABL1-ABL4 (AGESA Bootloader), ну и можно сюда плюсануть уже OpenSIL.
Сложив для себя все имеющиеся факты, я примерно понял, что речь тут, по видимому, о TSME. Но более известна эта аббревиатура под другим названием AMD Memory Guard. Эта вот такая смешная штука, что шифрует память, блин!
Чудный сисколл, как и говорилось выше, ответственен за запись ключиков в UMC. Из аргументов он принимает, очевидно, флаги для шифрования, а также некий
AddrTweakEn, я пока не определил кто это конкретно. Но скорее всего адрес с приколами!Помимо калькуляции твиков шифрования на основе битиков в флагах, меня зацепила одна вещь. На первом скрине,
gScrambleDataKey константный, буквально; это не адрес, это просто ключ. Этот небольшой ключик записывается по 4 адресам, вероятно самого контроллера: 0x50000, 0x150000, 0x250000 и 0x350000. На что влияет ключик? Ну, я думаю, что в совокупность с посчитанными твиками, он влияет на энтропию.На основе уже битиков из другого регистра (
gUmcProgramFlags, 0x134B0, фотокарточка 2), выбирается вариант программирования ключиков. В отличие от лежащего в сыром виде Scramble ключика, там уже всё нормально. В случае первого варианта, AMD Playstation Portable попытается взять буфер из некоего S5 Buffer (я очень хочу предположить, что это речь про режимы энергопотребления, но не буду). Второй вариант возьмёт существующий адрес, лежащий в ещё одном регистре, ну и после программирования постучится к CCP за SHA-256 хэшем (да).А, ну вы возможно увидели некий
WriteKeys, я предполагаю, что это значение может зависеть от того, прогорели ли фьюзы (а я думаю, что у TSME него есть свой фьюз (как у Intel AntiTheft, блин!)).Адреса, по которым могут храниться ключи, я показывать не буду, потому что они вполне себе могут быть разными, да и оставлю это на ваш интерес. Адресов всего 4. Только вам это, коде экзекушен инсайд амд плейстейшн портабл необходим. Ну или можете воспользоваться недавно найденным приколом на 16 поколениях АМУДЕ!
В конечном итоге, к моим целям эта находка никуда не привела.

