1. A breve aggiorneremo la piattaforma di Reboot per risolvere alcuni problemi con i plug-in, quindi chiediamo ancora un po' di pazienza, Lo staff di Reboot

LE PROTEZIONI NELLE CONSOLES - SONY PLAYSTATION

Discussione in 'Playstation 1' iniziata da student, 22 Ott 2017.

  1. student

    student Staff Livello 45 Staff

    Iscritto:
    30 Ago 2015
    Messaggi:
    4.797
    Like ricevuti:
    4.967
    [​IMG]

    Lo avete chiesto in diversi e visto che chi si era proposto attualmente non ha tempo mentre io ne ho trovato per puro caso (mezza influenza) oggi parliamo di Sony Playstation !

    La console, uscita in commercio nel 1994, ha avuto una gestazione "laboriosa" che è stata brillantemente descritta dal nostro @paololee paololee in questo suo articolo.

    In pratica, dopo primi parziali accordi con Nintendo per una versione evoluta dello SNES con supporto CD-ROM:
    [​IMG]
    da tutti ritenuta una fake news fino al 2016 quando venne effettuato un tear down dell'unico prototipo esistente che potete leggere in questo bel articolo di @StandardBus StandardBus, Sony decise di produrre in proprio quella che poi diventerà la capostipite dell suo impero sui videogames, la Playstation !
    [​IMG]
    [​IMG]

    Nel tempo la console subì varie revisioni hardware, concepite sia per risparmiare sui componenti sia per combattere la pratica dei modchips:
    [​IMG]

    Fino ad arrivare all'ultima revisione, la più compatta, uscita in commercio nel 2000 e chiamata PSOne (modello SCPH-10x):
    [​IMG]
    Era disponibile anche uno schermo LCD da 5 pollici "integrabile" nella scocca [codice prodotto originale SCPH-131]:
    [​IMG]



    UNITA'DI SVILUPPO

    [​IMG]
    Esistevano diversi modelli acquistabili dagli sviluppatori per fare debugging, modelli che subirono una evoluzione nel tempo. [Qui potete trovare molto materiale "devs"]

    • [​IMG]
      Le unità di sviluppo DTL-H1000 sono identiche alla prima versione SCPH-1000, ad eccezione del fatto che il loro BIOS ha le protezioni sulla regione e sul CD disabilitate (sono di un colore blu profondo anzichè il tipico grigio).

    • [​IMG]
      Le unità di sviluppo DTL-H120x erano unità di sviluppo di colore verde con una revisione dell'hardware più moderna.

    • [​IMG]
      "Yaroze" significa qualcosa come "facciamolo insieme!".
      Queste consoles furono commercializzate a partire dal 1997, erano più costose della loro controparte "da negozio", di colore nero e permettevano di sviluppare programmi caricabili via interfaccia seriale senza dover acquistare una developer suite completa; ovviamente erano meno potenti delle dev units e non avevano integrato il controllo sulla regione (ma mantenevano la protezione presente nei dischi (vedi oltre) ) !

      Nel video sottostante potete vedere in streaming alcuni "indie" prodotti per Yaroze:


      Queste unità erano anche dotate di una card che faceva da dongle necessaria per avviare la modalità di controllo via seriale tramite boot disc (l'eseguibile del boot disc fu crakkato per poterlo utilizzare senza tale dongle di protezione):
      [​IMG]


    PROTEZIONI E METODI DI BYPASS

    StandarBus ha già descritto le protezioni in questo suo speciale articolo, questo che state leggendo va ad integrarsi al suo :smile:

    DISCHI NORMALI CON DATI ALTERATI

    [​IMG]

    Lo "spaventoso" colore nero (che in realtà è un blu molto scuro) dei CD-ROM della Playstation è solo un qualcosa di visivo, non ha nulla a che fare con la protezione che contiene al contrario di ciò che era credenza popolare nell'epoca d'oro della console ! Nel periodo della playstation era infatti possibile trovare CD vergini proprio di quel colore (se cercate bene con google li trovate in vendita anche oggi!) a dimostrazione del fatto che il nero non era altro che una aggiunta di colore al polimero normale dei compact disc:
    [​IMG]
    La vera protezione risiedeva sul fatto che, dal settore 12 al settore 15, questi dischi contengono un checksum EDC/ECC con valore 0 (cosa impossibile per lo standard del formato); l'intera gamma di settori è scritta in formato RAW (2352 byte) e risulta azzerata anche la sotto-intestazione (subheader) XA oltre che i dati EDC/ECC; tutti i comuni masterizzatori dell'epoca modificavano automaticamente questi dati con i valori corretti producendo una copia del disco che non era dunque identica all'originale e la console se ne accorgeva !

    Che cosa sono EDC ed ECC ?
    EDC rappresenta un codice di controllo di tipo CRC utilizzato per verificare se il settore sia stato o meno letto correttamente;

    ECC consiste invece in una serie di dati utili per ricreare i dati del settore qualora risultasse con errori di lettura.

    Inoltre i primi 5 settori/blocchi dei dischi PSX (i primi 0x2DEF bytes a partire dall'offset 0x0000) contengono le informazioni sulla regione che vengono lette e confrontate con la regione di appartenenza della console; se risulta diversa il disco non parte.



    COME COPIARE IL DISCO CON PROTEZIONE EDC/ECC INTATTA

    L'unico modo per duplicare con successo questo sistema di protezione è quello di ottenere una copia 1:1 del disco (compresi i dati modificati) attraverso un firmware originale o modificato del masterizzatore che si utilizza e che deve avere queste caratteristiche:
    1. scrivere in modalità disc-at-once o track-at-once SENZA correggere automaticamente i settori "corrotti" con codici EDC / ECC non validi.
    2. consentire di scrivere la prima traccia in modalità RAW (settori di 2352 byte, CD-DA) e quindi forzare la TOC del disco per identificare la traccia come traccia CD-XA.


    COUNTRY LOCK-OUT

    Il codice della regione si basa sui primi 5 settori del CD.
    A per l'America (SCEA)
    E per l'Europa (SCEE)
    I per il Giappone (SCEI)
    W per Net Yarozee (SCEW)

    I settori 0-4 (5 in totale) contengono la linea 'Licensed from' con i dati della regione.

    In particolare i bits che identificano la regione come sopra descritta sembrano essere scritti in forma codificata nei dati ECC del settore 4 come descritto qui e qui (grazie a zoomx per la precisazione!).

    Questo controllo viene analizzato in fase di boot dal BIOS quindi nelle consoles di nuova generazione (che hanno BIOS più recente) se la regione del gioco è diversa da quella del disco quest'ultimo non parte (lo swap trick serve solo per bypassare il controllo dei dati fasulli nel CD).

    Le unità giapponesi che hanno come codice modello della scheda madre il SCPH-1000 esistono in diverse varianti, tutte con lo stesso codice ma a seconda della data di produzione possono contenere diverse versioni del BIOS. La differenza di base tra questi BIOS è che le unità precedenti non avevano il controllo del codice di paese (presumibilmente perché non era stato ancora implementato/ultimato) e quindi lo "swap trick" poteva essere utilizzato per avviare giochi non giapponesi, mentre le unità più recenti non permettevano il trick (stesso discorso per le consoles EUR / USA).

    La playstation SCPH-3000 è invece fondamentalmente una versione più economica della SCPH-1000, usando RAM di 70ns (invece di 60ns) e non ha la porta SVHS; il BIOS di questi modelli ha il controllo di protezione del codice della regione (come con la revisione successiva Giapponese dei modelli SCPH-1000).



    COME AGGIRARE LA PROTEZIONE COUNTRY LOCK-OUT

    Tutto ciò che serve per aggirare la protezione è leggere la prima traccia del gioco che si desidera convertire e saltare o "strippare" i primi 16 settori (da 0 a 15) e quindi sostituire i dati corretti al loro posto.

    I modchip aggiravano la protezione iniettando in tempo reale i dati corretti.



    SWAP TRICK

    Questo sistema putroppo non era perfetto e nemmeno sempre facile da eseguire. Il modo in cui funziona è il seguente: la console legge in primis un disco originale con licenza valida e copia la sua TOC in RAM; quindi l'utente scambia rapidamente il CD, senza che la PSX lo sappia, (tenendo premuto il sensore di chiusura o bloccandolo) uscendo ad esempio dalla schermata del lettore CD-DA che a sua volta avvia la sequenza di boot.

    In alcuni casi, quando le TOC di alcuni CD erano molto diverse (es. swap trick effettuato con giochi piccoli come Ridge Racer e giochi grandi come Mortal Kombat 3) il trucco funzionava in malo modo a causa del fatto che la TOC indicava un limite ai dati presenti ma il gioco andava a cercare dati oltre tale limite.

    Il metodo era diverso tra PSX e PSone a causa del ulteriore controllo sul boot text della console più recente ed inoltre a lungo andare stressava il drive ottico della console.

    Fino al 1996 sono stati documentati nel dettaglio ben 5 metodi di swap trick alcuni validi per i modelli fino al SCPH-7xxx (non ho trovato riscontri sul loro funzionamento nei modelli SCPH-9xxx e SCPH-10x):
    Codice:
    +----------------------------------------------------------------------------+
    ||                                                                          ||
    ||          HOW TO DEFEAT THE PLAYSTATION GEOGRAPHICAL PROTECTION           ||
    ||               Mini FAQ --- Version 2.20 --- April 1996                   ||
    ||                     (c) Copyright John Muir 1996                         ||
    ||       Beware of cheap imitations : Get the ORIGINAL and the best!        ||
    ||                                                                          ||
    +----------------------------------------------------------------------------+
    
    
    ============================================================================
    
      Copyright and Usage Conditions:
    
       Anyone who wishes to post this MFAQ on a Web page or some other Internet
       or non Internet resource may do so providing the MFAQ is left in its
       ORIGINAL form and the work is not credited as your own.  I reserve the
       right to deny permission for ANY commercial use of this MFAQ whether
       that is in printed or digital form.  Please remove ALL versions before
       2.20 as they are now outdated.
    
      Disclaimer:
    
       I cannot be held for responsible for any damage caused through direct or
       indirect use of the instructions detailed within this MFAQ.
    
    
    ============================================================================
    
    
    > Why does this MFAQ exist?
       Sony, in its infinite wisdom, has decided that you should only be
       able to play officially released games for your area.  European games
       in Europe, Japanese games in Japan and so on.  This MFAQ is for people
       who wish to play "foreign" or "import" games.
    
    > What?  You mean I can't run Dragon Ball Z in my American machine!?
       I'm afraid not.  Try booting ANY Japanese CD in your US machine and it
       won't work.  You will get a message stating this is not a suitable CD
       for your machine.  Needless to say, this also applies to all other
       possible combination of machines and software.
    
      > Is the situation hopeless?  Will I never be able to play "imports"?
        Not at all.  Datel UK hope to have a commercial adaptor ready soon
        which will plug into the I/O slot at the back of your machine, this
        will remove the regional boot-up protection and allow you to use ANY
        title on ANY machine without reverting to any form of trick or kludge.
    
      > Where can I get this adaptor?  It sounds cool!
        You can't.  It isn't released yet.  There is NO firm release date.
        Check out http://www.datel.co.uk for the latest news.  Do NOT e-mail
        me, I have no inside info.
    
      > But I want to play imports NOW!
    
        OK, since you asked here is how you can play most (if not all)
        foreign CDs on your machine.
    
    
    ============================================================================
    
      Please check the table below to determine what Swap Method is best for
      your particular machine.  NB: the Double method will work on ALL models
      of the PlayStation but is NOT very easy to do so I have only listed it
      if your machine ONLY supports this method and no other.
    
      Model Number                  Country of Origin             Swap Trick?
    
      -----------------------------------------------------------------------
    
      SCPH-1000 [Initial batch]           JAPAN                   Yes, all
      SCPH-1000 [Second batch]            JAPAN                   Yes, black
      SCPH-3000 [Initial batch]           JAPAN                   Yes, black
      SCPH-3000 [Second batch]            JAPAN                   Yes, double
      SCPH-1001 [Initial batch]           USA                     Yes, all
      SCPH-1001 [S/N 592xxx or higher] *  USA                     Yes, double
      SCPH-1002 [Initial batch]           PAL                     Yes, all
      SCPH-1002 [Second batch]            PAL                     Yes, double
      SCPH-2000 [Development machine]     N/A                     N/A
    
      * S/N = serial number, importantly linked to date of manufacture.
    
      -----------------------------------------------------------------------
    
    
    ============================================================================
      There are five methods which allow you to use almost ANY PlayStation CD
      in ANY PlayStation, regardless of origin.  I have yet to hear of any
      hardware damage using these methods although this doesn't mean that it
      hasn't happened.  Please understand NOT all PlayStations are created the
      same.
    
      The five methods are detailed below (one very easy, three quite easy and
      one difficult.)  Various terms are used below, please be sure you know
      exactly what they mean before attempting any of the swap methods:
    
    
      LOCAL:
      A CD which is intended for your region, most likely bought at a local
      store.  The pack-in demo CD is a "local" disc.
    
      FOREIGN:
    
      Any CD which contains territory information other than that of the host
      machine.  Japanese, European and Australian CDs are all foreign if you
      have a US machine.
    
      NTSC and PAL:
    
      It is important to note that running a PAL (Australia, Europe) on your
      NTSC machine (US, Japan) or vice versa can cause display problems.
      Take this into consideration when buying/using imports.  See below for
      possible solutions.
      ROM:
    
      The Read Only Memory section of your PlayStation where the different
      country protection routines are stored.
    
      AUDIO MENU:
    
      Designed for listening to audio CDs or the audio tracks stored on PS
      CD-ROMs but also provides a handy backdoor for swap trick-ers.
    
      LID SENSOR:
    
      A small button shaped object located near the CD tray at the rear on the
      right hand side.  Indicates to the PlayStation whether the lid is open or
      closed and essential for any swap trick.
    
      BLACK and WHITE SCREENS:
    
      The White screen is the initial screen that appears on bootup and the
      Black screen is the first thing to appear when you boot a valid CD-ROM.
    
    
    ============================================================================
    
    
      METHOD ONE:  The Audio Menu [Safe and very easy]
      ------------------------------------------------
    
      Works on :  Very early Japanese, European and American machines.
      Success  :  80%
      Problems :  Music is often corrupted.  The TOC (Table of Contents)
              from the boot CD is always used which is less than ideal.
      o  Power up your PlayStation WITHOUT a game or demo CD in it.
    
      o  Select the CD Audio menu.
    
      o  Get a local CD that matches the country of the machine you
         have.  (ie a Japanese game for a Japanese PlayStation etc.)
    
      o  Find some tape, Blu-Tak or something similar.  Several people I know
         have found the corner from a cornflake packet works well <shrug>.
    
      o  Open the lid and look at the top right of the bottom section,
         near where the hinge is.  See the small circle in the groove?
         Good.  This is the lid sensor.
    
      o  Insert your local CD.
    
      o  Put the tape, Blu-Tak or whatever over the sensor and *gently*
         push it down.  The CD will now spin for a few seconds.
    
      o  When the CD has finished spinning take it out and replace it
         with the foreign game you wish to play.
    
      o  Now shut the lid and exit the CD Audio menu.  The game should
         now work fine (see above for exceptions.)
    
      o  When you have finished playing, open the lid and remove the
         tape, Blu-Tak etc from the sensor.  This will stop the CD.
    
    
      Notes:
    
      i    Try and get a local CD with as many tracks on it as you can.
           The local CD must have at least as many tracks as the foreign CD
           or you won't get all the music.  Depending on the boot CD the
           foreign game may give poor results or even crash.
    
           Unfortunately the number of music tracks is NOT the only deciding
           factor (the length of the data track is another) and you may find
           that you are unable to get your foreign game to work satisfactorily
           with the choice of boot CDs you have.  See the other methods, they
           may give better results.
    
      ii   Owners of Japanese SCPH-1000 (later batch), SCPH-3000 machines and
           later European/US models will find that this method does NOT
           work.  Sony has removed this particular loophole in the latest ROM
           revision.
    
      iii  You can ONLY run PAL games on NTSC machines if you have an RGB
           cable (not s-video, composite or ANYTHING else.)  This also
           applies to NTSC games on a PAL machine.  In Europe this problem
           is easily solved by investing in an import spec RGB/SCART cable
           as sold for use with Japanese/US PlayStations.  In North America,
           Australia etc you will need to look into the options available to
           you (an old or expensive monitor, probably.)  I understand a cable
           for 1084 monitors will shortly be available in the US.
    
    
      METHOD TWO:  The OLD Black Method [Fairly safe and easy]
      --------------------------------------------------------
    
      Works on :  All early machines, see above for meaning of "early".
      Success  :  85%
      Problems :  Most games will work albeit sometimes with music glitches
              or unexpected crashes.
    
    
      o  Follow the Audio method with a local CD in your machine.  The lid
         should be up and the lid sensor held down.
    
      o  When the black PlayStation screen appears (after the white Sony one)
         QUICKLY lift the original game out and replace with the foreign one.
         You have a few seconds to do this and it soon becomes second nature.
    
      o  If you must have the music working 100% or have a really stubborn
         foreign game then try the NEW Black method detailed below.
    
    
      METHOD THREE:  The NEW Black Method [Fairly safe but tricky]
      ------------------------------------------------------------
      Works on :  The same machines that can do the OLD Black trick.
      Success  :  100%
      Problems :  Not supported by all models.
    
    
      o  This method is a variant on the White Audio menu method but involves
         an extra step where you basically "piggy back" the OLD Black method
         onto the White Audio menu hybrid.
    
      o  Try and get a local CD with lots of music tracks as this gives you a
         little extra time to perform the first swap.
    
      o  Go to the Audio menu and press down the sensor, remove the local CD
         just before the audio tracks pop up and replace with the foreign CD.
         The foreign CD's tracks should appear and NOT those of the local CD.
    
      o  Replace the boot CD and exit the CD Audio menu.
    
      o  At the Black screen, replace the import CD as in the original method.
    
      Note:
      The territory information that normally appears before the TM at the
      Black screen will be corrupted, this is normal.
      METHOD FOUR:  The White Method(s) [Fairly safe but tricky]
      ----------------------------------------------------------
    
      Works on :  The same very early models that can do the Audio method.
      Success  :  100%
      Problems :  Not supported by all models.
    
    
      o  Switch on your machine and count  1..2..3..4 and THEN swap discs.  You
         need to do this *JUST* before the white Sony screen appears.  The
         timing is tough, you want the PS to read the country code but NOT the
         TOC so don't expect to get it right every time.
    
      o  Another variation is to use a hybrid Audio Menu swap trick:  remove the
         boot CD and replace it with the "foreign" game just after the original
         country code is read and before the TOC.  Many people find this method
         easier then the original White method.
    
      Note:
    
      If you have performed the swap correctly then the import CD audio tracks
      will be shown NOT those of the local CD.
    
    
      METHOD FIVE:  The Double Swap Method [Fairly safe but pretty tricky]
      --------------------------------------------------------------------
    
      Works on :  All PlayStations to date, including the latest models.
      Success  :  100%
      Problems :  Do not kid yourself, this method IS difficult.  The end
    
              result is well worth it (especially if you have no other
              options.)
    
    ============================================================================
    
                      I M P O R T A N T
    
      I can NO LONGER accept any more questions on this method, everything you
      need to know is here.  Please, please do not e-mail me asking for help.
    
    ============================================================================
    
    
      Note:
      1x and 2x refer to the CD motor speed (single speed and double speed),
      watch a few of your games boot up with the lid open and you can easily
      see and hear the "gear changes".  To get full music timing is highly
      critical otherwise the original TOC is used.
      o  Insert your local CD.
    
      o  Remove the local CD when the motor changes to 2x and replace it
         with your foreign CD.
    
      [If you did this right, you *SHOULD* see the black PS screen now.]
    
      o  Watch and listen to the CD motor.  It will slow down and then
         speed back up to 2x.
    
      o  After a few seconds, the CD motor will slow down again.  Replace
         with your local CD once again.
    
      o  After another half second or so, the local CD will speed up again.
         Finally replace your foreign CD.
    
    +----------------------------------------------------------------------------+
    ||                                                                          ||
    ||                               C R E D I T S                              ||
    ||                                                                          ||
    ||  Marty Chinn ………………….. (for the SCPH-1000 and other info)  ||
    ||  Joe @ Tronix …………………. (for the White method)              ||
    ||  Tony in Hong Kong …………….. (for the Audio and Black methods)   ||
    ||  Nelson Fong ………………….. (for the Double method)             ||
    ||                                                                          ||
    +----------------------------------------------------------------------------+
    

    Ecco alcuni video dello swap trick in azione:



    double swap:



    Tonyhax

    [​IMG]
    L'11.03.2021 il dev socram8888 rilascia in modo del tutto inaspettato questo exploit che si basa su un buffer overflow nei giochi Tony Hawk’s Pro Skater 2 e Tony Hawk’s Pro Skater 3 (entrambi sia versione PAL che NTSC) dovuto ad un mancato controllo sulla lunghezza del nome dello skater.

    L'exploit va ad eseguire un primo loader che carica un secondo eseguibile (SPL) sempre salvato nella memory card il quale invia al lettore CD-ROM una serie di 7 comandi non documentati (CD BIOS unlock command), scovati nel 2013 dal dev Martin Korth, che fungono come una sorta di backdoor ed in grado di disabilitare il controllo della stringa "SCEx" sul CD; quando il driver del lettore riceve questi comandi, anche se eseguiti correttamente, esso invia un comando di errore (probabilmente per nascondere quello che fanno); il programma SPL non fa altro che ricevere lo specifico errore, attendere l'apertura dello sportello CD per permettere lo swap del disco con un altro, reinizializzare il file system, andare leggere il file di configurazione SYSTEM.CNF, reinizializzare il kernel con i parametri necessari appena letti e caricare il gioco.

    L'exploit permette di eseguire dischi masterizzati o di altre regioni senza la necessità di avere un modchip, molto utile soprattutto nelle ultime revisioni hardware PSOne dove l'installazione di tali dispositivi è piuttosto laboriosa.

    I files possono essere caricati sulla memory card sia avendo il gioco in questione sia attraverso una PS2 con Free McBoot e uLaunchELF.

    Questo hack è utilizzabile su tutte le consoles PAL; non funziona sui primissimi modelli NTSC-U SCPH-1000 a causa dell'inesistenza dei comandi di sblocco nel BIOS del CD-ROM e sulle consoles NTSC-J perchè, pur esistendo i comandi, questi non vengono comunque eseguiti.



    FreePSXBoot

    [​IMG]
    Il 9 Aprile 2021 il dev brad-lin ha pubblicato su github FreePSXBoot, un nuovo exploit che non richiede alcun disco per essere eseguito ! Questo exploit si basa su un bug scoperto nel BIOS delle console SCPH-9002 (è stata successivamente verificata la sua esistenza praticamente in tutte le versioni di BIOS esistenti) relativo alla lettura e manipolazione delle schede di memoria. Nello specifico la funzione sfruttata è ReadMemCardDirectory; attraverso mancati controlli della stessa è possibile eseguire fino a 128bytes di codice arbitrario nella memory card e dargli un chckesum errato così da prevenire interferenze con altro codice (la console non permetterà una riscrittura dell'area interessata); con sole 32 istruzioni MIPS inseribili in così pochi bytes è stato comunque possibile creare un loader in grado di caricare altro codice dalla memory card (nei raw dumps di memory card forniti nel repository è incluso l'homebrew UniROM) ! L'esecuzione dell'exploit, una volta cliccata l'opzione "Memory Card", richiede circa 20 secondi mostrando nel frattempo un flickering arancione a schermo. Per "spalmare" il dump dell'immagine su una memory card è necessario hardware accessorio come Memcarduino o simile oppure utilizzare l'homebrew per PS2 chiamato Memory Card Annihilator v2.0 (rinominare il file .mcd in .mcr altrimenti non verrà riconosciuto) utilizzando l'opzione "Restore MC Image"; una volta alterata la memory card, quest'ultima non sarà più correttamente utilizzabile per i comuni salvataggi potendo provocare crashes di sistema quindi usatela solo per avviare l'exploit (sarà comunque recuperabile attraverso un full format effettuato con Memory Card Annihilator 2.0).



    BOOT TEXT SECURITY

    Nelle nuove playstation (PSone) esiste un ulteriore controllo:
    [​IMG]
    Questo logo (e nello specifico la frase "Licensed by Sony Computer Entertainment America SCEA TM") non è contenuto nel sistema ma è programmato nel gioco. Le nuove consoles controllano anche l'integrità di questi dati non permettendo più la possibilità di avere boot screens personalizzati, cosa che accadeva con revisioni del BIOS meno aggiornate.
    Questa protezione puo' essere bypassata con un modchip in grado di iniettare anche questi dati oppure sfruttando il fatto che la console è in grado di leggere giochi su più dischi: quando viene chiesto il secondo disco la console non effettua alcun controllo su questa protezione dello stesso: tale sistema è sfruttabile tramite il disco di boot chiamato Import Player (vedi più in basso).



    MODCHIP DETECTION

    Alcuni giochi potevano cercare la presenza di codice iniettato alla richiesta del region code: se trovavano codice iniettato il gioco non partiva, se non lo trovavano si.

    La funzione di ricerca era la seguente:
    - Pulire (clear) lo status SCEX
    - Spostare la testina sull'area che contiene i dati SCEX e provare a leggerli; in questa prima lettura sia una console con modchip che senza riesce a leggere tali dati
    - Spostare la testina su un'area differente (che non contiene i dati SCEX)
    - Pulire (clear) lo status SCEX
    - Leggere la stringa SCEX
    Se la stringa veniva "trovata" anche in questo secondo tentativo di lettura (perchè inviata dal modchip) quando invece non sarebbe dovuta essere presente, scattava la protezione.

    Questa protezione poteva essere bypassata sia con Import Player che patchando l'eseguibile del gioco prima di masterizzarlo. In questo caso la copia 1:1 del disco poteva non funzionare.

    [​IMG]
    Un boot disc che permetteva di bypassare protezioni e checks. Anti-AR sta per anti-ActionReplay.



    PROTEZIONE LibCrypt

    Nel 1998 la Sony ha introdotto in Giappone il primo gioco protetto (PoPoRogue) nel cui codice sono presenti funzioni che vanno alla ricerca dei modchip ed utilizza una speciale "key" di 16 bit. Questo codice elaborato sui 16 bit di tale "key" fu chiamato "LibCrypt". 6 Mesi dopo l'uscita del suddetto gioco anche in Europa è apparso il primo titolo protetto: Medievil.

    I reversers studiarono tale sistema e capirono che alcuni dati di questi dischi protetti venivano salvati nei sottocanali dei settori del CD protetto rendendolo "fuori standard"; nel dettaglio:
    ogni CD PSX contiene settori di 2352 bytes + 96 bytes di subchannel data + 2 bytes chiamati "sync"; secondo lo standard Yellow Book (che non è free, è a pagamento; essendo però il CD-ROM anche standard ISO10149 le sue specifiche sono liberamente consultabili) questi 96 bytes non possono contenere dati utente e sono suddivisi in 8 canali da 12 bytes ognuno chiamati P, Q, R, S T, U, V, W. Nei dischi "normali" il canale P contiene informazioni di "pausa", mentre il canale Q contiene le flags della traccia e l'indirizzo del settore attuale [MSF = Minute:Frame:Second] (vedere lo standard di cui sopra per capire meglio); tutti gli altri hanno i bytes impostati a 0.

    I dischi con protezione LibCrypt hanno invece 16 o 32 settori con il sottocanale Q leggermente modificato (in pratica Sony ha utilizzato anche i bytes del canale Q come se fossero dati "personalizzabili" dall'utente); la prima metà dei settori è salvata al terzo minuto mentre la seconda metà al minuto 9 (questa seconda metà sembra essere una sorta di backup della prima ed a quanto pare non viene mai utilizzata nella computazione eseguita da LibCrypt).

    Teoricamente i canali Q modificati potrebbero essere ovunque nel disco ma lo studio dei giochi protetti ha dimostrato che questi si trovano sempre nelle stesse posizioni:
    [​IMG]
    Tutti i settori modificati possono essere divisi in coppie, la distanza tra i settori in ogni coppia è di 5 settori.
    Attualmente sono stati identificati 3 metodi di modifica dei dati:

    - 2 bit di entrambi gli MSF accoppiati sono modificati, il loro CRC-16 è ricalcolato e xorato con 0x0080 (es. Medievil)
    - 2 bit di entrambi gli MSF accoppiati sono modificati, il loro CRC-16 è ricalcolato e xorato con 0x0081 (es. Dino Crisis)
    - Entrambi o nessuno dei 2 bit degli MSF accoppiati sono modificati, il loro CRC-16 è ricalcolato e xorato con 0x0080 (es. Ape Escape)

    Ad ogni settore che presenta i dati modificati la protezione assegna il valore 1 mentre ai settori non modificati assegna il valore 0; l'insieme degli 0 e degli 1 ottenuti sui settori con possibile protezione al minuto 3 danno alla fine un valore univoco chiamato impropriamente "key" che è specifico per ogni gioco; con questa "key" (che, come avrete capito, in realtà non è una vera e propria key ma un "derivato" dei canali con possibili dati modificati) viene decodificato un insieme di dati: se la decodifica non porta a dati corretti (è questo il controllo che esegue LibCrypt) il sistema va in crash.

    Di oltre 2.500 titoli questa protezione è utilizzata in poco più di un centinaio di giochi.

    La verifica di questi dati puo'avvenire immediatamente (es. FF8), oppure soltanto se si arriva ad un certo livello (es. Spyro2), oppure i dati possono essere controllati periodicamente durante i caricamenti (es. SoulReaver) o infine in specifici momenti (es. Mulan). Per creare una patch specifica dunque il reverser deve studiarsi tutto il codice di gioco ed andare a bypassare tutti i punti in cui vengono eseguiti uno o più di tali controlli.

    Esistono attualmente almeno 4 varianti di LibCrypt chiamate LC1, LC2, LC3 ed LC4 ognuna sempre più difficile da identificare nel codice dell'eseguibile del gioco.

    Il suo bypass è ottenibile con un lettore CD-ROM associato a relativi softwares (CloneCD, Alchool120%, ecc) che supportino l'estrazione dei dati dei subchannels ed un masterizzatore che ne permetta la scrittura senza correzione alcuna. In alternativa, come già anticipato, va patchato l'eseguibile del gioco con patches specifiche.



    ACTION REPLAY

    [​IMG]
    Le Action Replay per PSX si inserivano nella porta parallela posteriore della console e permettevano di bypassare alcune protezioni utilizzando una sorta di "cheat" di sistema. Sony "risolse" questo sistema eliminando la porta parallela nei modelli successivi.



    MODCHIPS

    All'epoca della Playstation i modchips l'hanno fatta da padroni sia per la scarsa conoscenza dettagliata delle protezioni sia per difficoltà a reperire un lettore/masterizzatore in grado di riuscire ad estrarre i dati alterati e soprattutto di non correggerli automaticamente in fase di scrittura.

    I dati che il BIOS cerca passano via interfaccia seriale ad una velocità di 250bps e consistono nei caratteri SCEI, SCEE o SCEA a seconda della regione utilizzata (Giappone, Europa o America - dal codice sorgente "The Old Crow" si evince che i modchips non supportavano anche il codice Net Yaroze SCEW): inviando a rotazione tutte e 3 le stringhe il chip riusciva ad ingannare la console.

    Quasi tutti si basavano su processori PIC e dovevano essere saldati sulla scheda madre con un quantitativo di fili che andava da 3 in su:
    • Microchip PIC16x54 con firmware basato su codice cinese (creato nel 1996 presumibilmente da un coder non asiatico al soldo di una azienda di Hong Kong; chip venduto per la "modica" cifra di circa 40-80 dollari - Nello stesso anno qualcuno, apparentemente residente nei paesi bassi, riuscì a reversare il codice e si mise in competizione cosi da far abbassare il prezzo dei chips a circa 25 dollari. Ma fu nel 1997, quando il reverser Old Crow fu in grado di rendere open source il funzionamento di questi dispositivi, che il prezzo scese addirittura attorno ai 10 dollari al pezzo fino a toccare minimi di 5 dollari quando uscirono in commercio i PIC 12C508, decisamente più abbordabili)
    • Microchip PIC16x84 con firmware basato sul codice di The Old Crow
    • Microchip PIC12C508 con firmware basato sul codice di The Old Crow
    • Microchip PIC12C509 con firmware basato sul codice di The Old Crow
    • Microchip Atmel 8051 e cloni con firmware basato sul codice di The Old Crow
    I programmatori presero le dovute contromisure e crearono del codice all'interno dei loro giochi per andare a cercare questo stream di dati inviato; questi modchip non potevano bypassare questa protezione ed il risultato era una schermata come questa:
    [​IMG]

    A questo punto iniziarono ad essere sviluppate o patches per crakkare questo codice direttamente nell'eseguibile di gioco ma contemporaneamente uscirono anche i cosiddetti modchip "stealth", capaci di interrompere l'invio dello stream di dati quando non era necessario di fatto superando la nuova protezione. I PIC utilizzati erano sempre gli stessi (di solito si usava il PIC12C508) ma cambiava sia l'hardware che gestivano (di solito avevano un oscillatore) sia il codice caricato al loro interno. Nel tempo il codice si raffinò fino a supportare anche il controllo LibCrypt.

    Uno dei chip più utilizzati era il MultiMode 3:
    [​IMG]
    MultiMode 3 ma non era semplice da montare su PSOne per questo l'altro chip utilizzato era il ONEChip:
    [​IMG]
    [​IMG]

    Tutti questi chip però avevano un limite: erano programmabili 1 sola volta !
    Per questo diversi anni fa GaryOPA, amministratore di un noto forum per psx, convertì il codice per questi chip per farlo funzionare sul più moderno PC12F629, prodotto questa volta riscrivibile e con collegamenti analoghi alla sua controparte write-once 12C508 ! Il nostro @StandardBus Standardbus ha scritto una guida che tratta proprio loro !!

    Arriva infine PsNee, un modchip ancora sviluppato nel 2017 basato su un Arduino in grado di bypassare tutte le protezioni discusse:
    [​IMG]



    PSIO

    [​IMG]
    PSIO è l'ultimo ritrovato della tecnica per gli appassionati di preservazione ed hacking Playstation ! Si tratta di un emulatore del drive ottico della console ideato nel 2010 e prototipizzato nel 2012; una specie di "flash cart" con lettore SD integrato che si collega alla porta parallela della console e permette di caricare titoli in formato .ISO, .IMG o .BIN+CUE direttamente dalla SD tramite apposito menu a schermo con velocità addirittura superiori a quelle del CD-ROM originale (un CD-ROM Playstation ha una velocità di lettura di circa 150-300 KB/s mentre la porta parallela della console offre un massimo di circa 3 MB/s) ! In teoria sembra sia possibile collegare il dispositivo anche internamente alle SCPH-900x ed alle PSOne (in queste unità Sony ha rimosso la porta parallela) ma non credo che la soluzione sia stata ancora commercializzata.

    Vedi altre immagini:
    [​IMG]
    [​IMG]
    [​IMG]



    PROBLEMI PAL / NTSC

    [​IMG]
    Quando si riproduce un gioco NTSC su una console PAL o viceversa quello che si visualizzerà a schermo sarà una immagine in bianco e nero a meno che non si utilizzi un televisore con connettore SCART ed uno specifico cavetto PSX:arrowright:TV oppure a meno che la propria TV non sia in grado di elaborare entrambi i tipi di segnale (quelle moderne in genere lo sono)

    Se non si hanno questi dispositivi l'unico modo per visualizzare questi giochi a colori è attraverso una apposita modifica.

    L'output video in tutti i modelli di Playstation è fornito dal chip Sony CXA1645. Questo chip è in grado di generare un segnale sia PAL che NTSC, ma il segnale del colore sovrapposto al video viene generato da un oscillatore a frequenza fissa saldato sulla scheda madre;
    la modifica funziona tramite un segnale di colore alternato che viene inviato attraverso dei fili saldati direttamente sui PIN del chip CXA1645. Tale mod prevede il taglio di piste di rame o la dissaldatura di alcuni PIN di alcuni componenti con conseguente rischio di poter danneggiare la console irreparabilmente se non si hanno le competenze tecniche necessarie per questo genere di lavori quindi evitatela se non volete far danni !



    CONCLUSIONI

    Non c'è che dire, nonostante sia la prima console prodotta da Sony i sistemi di protezione sviluppati nel corso della sua lunga esistenza (12 anni sono tanti !) sono stati stati certamente degni di nota e sono riusciti a tenere impegnati i reversers per diverso tempo !

    Spero che l'argomento, se pur già in parte trattato sia da Paololee che da StandardBus, sia comunque piaciuto ! :smile:


    Se non ne avete ancora abbastanza ora è il momento di passare alla Playstation 2 !
     
    #1
    Ultima modifica: 13 Apr 2021
    A gelderm, Coolguy, Vegalomen e 13 altri utenti piace questo elemento.
  2. motherfan

    motherfan [Banned]

    Iscritto:
    29 Ott 2015
    Messaggi:
    609
    Like ricevuti:
    123
    student coreggi la psone non aveva lcd integrato ma era aquistabile a parte
     
    #2
    A student piace questo elemento.
  3. Nila

    Nila Livello 7

    Iscritto:
    7 Ago 2015
    Messaggi:
    150
    Like ricevuti:
    87
    Sbranata!
     
    #3
    A vValerio pPisano 2.0 e student piace questo messaggio.
  4. student

    student Staff Livello 45 Staff

    Iscritto:
    30 Ago 2015
    Messaggi:
    4.797
    Like ricevuti:
    4.967
    Oddio hai ragione ! Fatto, grazie !! Mi piace quando fate le pulci ai miei articoli !!! :smile:
     
    #4
  5. MadDog.76

    MadDog.76 -- Gunslinger --

    Iscritto:
    7 Ott 2015
    Messaggi:
    1.024
    Like ricevuti:
    313
    Non l'ho ancora letto tutto ma la Playstation è per me custode di ricordi meravigliosi quindi penso la imparerò a memoria!!! :hearteyes:10+ a prescindere per l'impegno! :thumbsup:

    Quanto tempo passato a modificare le intro boot dei cd (e quanti CD-R buttati...).
    Mi ricordo ancora le mitiche patch/trainer dei B.A.D. (Best Amiga Dominators), italianissimi e arrestati per le loro patch... E qui parte la lacrimuccia...:cry:

    [​IMG]
     
    #5
    Ultima modifica: 25 Ott 2017
    A student piace questo elemento.
  6. zoomx

    zoomx Livello 19

    Iscritto:
    12 Set 2015
    Messaggi:
    897
    Like ricevuti:
    344
    A quanto ho capito la stringa SCEA (Sony Computer Entertainment of America), SCEE (Sony Computer Entertainment of Europe) o SCEI (Sony Computer Entertainment of Japan) non era scritta sul CD ma veniva ottenuta in una maniera veramente ingegnosa.
    Il settore in questione era inciso con alcuni errori artificiali fatti in modo che il circuito correttore di traccia, quello che mantiene la testina in posizione sulla traccia, emetteva una stringa che era proprio il nostro SCEE a 250 bps (con 1 bit di avvio e 2 bit di stop).
    Il primo modello di modchip emetteva tutte le stringhe (SCEA, SCEE, SCEI) in sequenza per un certo tempo e poi smetteva. Questo sistema andava bene per la protezione sulla Playstation ma non per i giochi che provavano daccapo a leggere il settore errato che nelle copie non c'era.
    Per evitare questo venne aggiunto il rilevamento della posizione della testina tramite 2 ulteriori fili per i segnali SUBQ / SQCK (cosa che mi fa sospettare che il protocollo sia I2C). In questo modo il modchip si accorge che viene effettuata una richiesta di leggere il settore con l'errore e quindi inietta la stringa ASCII. Quando la testina si sposta smette. I modchip che si comportano così vengono detti stealth perché appunto non vengono rilevati dai giochi.

    Queste informazioni sono tratte dai commenti nello sketch del modchip realizzato con Arduino PsNee. Stavo scrivendo qualcosa ma questo scritto da student è molto meglio!

    https://github.com/kalymos/PsNee

    PS. L'8051 originariamente era un chip Intel. Oggi è poco utilizzato ma sopravvive in chip più grossi che fanno altro in quanto il codice esistente per questa MCU è enorme e ne esistono cloni prodotti da diversi produttori. Se non ricordo male le moltre istruzioni in assembly erano identiche a quelle dell'8088, la CPU usata nel primo PC IBM con MS-DOS.
     
    #6
  7. student

    student Staff Livello 45 Staff

    Iscritto:
    30 Ago 2015
    Messaggi:
    4.797
    Like ricevuti:
    4.967
    Hai ragione zoomx, in effetti la stringa ASCII SCEx non c'è nei settori da 0 a 4 della traccia dati quindi sta per forza nei dati "aggiuntivi"; ora vado a verificare, mi servono i dati aggiuntivi dei settori di controllo e dei subchannels, se li trovo updato questa risposta :smile:

    Edit: trovati i "subdati" ma non c'è scritto in chiaro SCEx quindi immagino siano in qualche modo codificati. CHEFFIGATA !
     
    #7
    Ultima modifica: 25 Ott 2017
  8. zoomx

    zoomx Livello 19

    Iscritto:
    12 Set 2015
    Messaggi:
    897
    Like ricevuti:
    344
    Non mi sono spiegato bene.
    I lettori CD hanno un circuito che serve a mantenere allineata la testina di lettura con la traccia. I furbacchioni della Sony hanno ideato una serie di errori di allineamento traccia sul CD che fanno in modo che il circuito di correzione emetta quella stringa ASCII che viene letta da qualche ulteriore chip e non dalla testina di lettura. Quindi tale stringa non è contenuta nei dati scritti. Geniale, per l'epoca. Sempre che sia andata così.
    Se vai nel sito al link trovi la spiegazione che ho letto in inglese e che ho riportato qui.
     
    #8
  9. student

    student Staff Livello 45 Staff

    Iscritto:
    30 Ago 2015
    Messaggi:
    4.797
    Like ricevuti:
    4.967
    Si ho letto ed ho letto anche nel forum relativo (ho aggiunto i link); per quel che ho potuto capire i dati SCEx sono codificati nei dati ECC e/o nei subchannels come ho scritto nell'articolo (quei subchannels che infatti solitamente, come da standard yellow book, non sono utilizzati per memorizzare dati utente ma servono per la gestione del disco) e questa "codifica" viene decodificata poi in SCEx (se dal BIOS o da un altro componente legato alla testina non è dato sapere con esattezza, se ho tempo stasera mi leggo tutte e 17 le pagine del thread !); il modchip entra in azione a stringa già decodificata.

    EDIT:
    Aggiunto PsNee all'elenco dei modchips :smile:
     
    #9
  10. Coolguy

    Coolguy Livello 15

    Iscritto:
    1 Feb 2015
    Messaggi:
    596
    Like ricevuti:
    98
    Io ed i miei amici ce ne rendemmo conto della protezione dei sub settori. E ci fiondammo nel passare dallo Yamaha 8424scsi al Plextor 8824 che usava oltre al SAO il DAO RAW!
     
    #10
    A student piace questo elemento.
  11. zoomx

    zoomx Livello 19

    Iscritto:
    12 Set 2015
    Messaggi:
    897
    Like ricevuti:
    344
    Miiiii il forum mi era sfuggito! Ho letto alcune pagine ma in quel forum si son concentrati sul rilevamento della posizione della testina non su come effettivamente viene originata la stringa sulla console non modificata.

    Tornando al nostro discorso se non ho capito male si tratta di un qualcosa al di fuori dello standard. Se non ho capito male.

    PsNee ha il vantaggio di avere il codice pubblico e soprattutto comprensibile. Quello per il PIC doveva essere in assembly non credo fosse in C, io ho visto solo i binari che non mi dicono nulla, ma che credo siano stati decompilati (se ne parlava brevemente nel forum) e quindi il codice è stato portato su Arduino con Atmega328 e parzialmente su Attiny85, una MCU decisamente più piccola ma con meno memoria.
     
    #11
  12. student

    student Staff Livello 45 Staff

    Iscritto:
    30 Ago 2015
    Messaggi:
    4.797
    Like ricevuti:
    4.967
    Si, nel forum c'è anche il codice da compilare (ieri sera mi sono letto tutte le 17 pagine); in sostanza i modchip si "attaccano" a delle piste quando già il segnale è decodificato e la codifica della regione si trova proprio nei dati dei subchannel del settore 4 e, ho verificato di nuovo con immagini di dischi in diversi formati (.BIN, .IMG, .CCD), non sono scritti "in chiaro" ma qualcosa li produce; ad un modchip questo non interessa, basta che si inserisca in stile MITM nel punto in cui tali dati in chiaro passano prima di essere elaborati e fornisca il dato corretto al momento giusto.
     
    #12
  13. zoomx

    zoomx Livello 19

    Iscritto:
    12 Set 2015
    Messaggi:
    897
    Like ricevuti:
    344
    Il codice c'è anche in GitHub dove è presente anche una correzione per rilevare l'apertura dello sportello e per la compatibilita con la Yaroze (sono le 2 Pull request). Sarei tentato a farne uno la le due PS1 che ho hanno già il modchip.
    Il codice non è comprensibilissimo (ci son ben 2 goto!), probabilmente un porting del codice in assembly del PIC.
     
    #13
  14. PickNix00

    PickNix00 Ospite

    Mi incuriosiva molto il chip basato su Arduino, ho flashato un Arduino nano ma non si trovano gli schemi per ps1 700x
     
    #14
  15. zoomx

    zoomx Livello 19

    Iscritto:
    12 Set 2015
    Messaggi:
    897
    Like ricevuti:
    344
    Mi son detto: confronto gli schemi comuni fra un classico modchip e quello di psnee e vedo quale numero di pin del PIC cosrrisponde al pin di Arduino.
    Ho scelto la scheda PU-23 ma i punti non corrispondono tutti
    Il 6 corrrisponde alla linea DATA e quindi al pin 8 di Arduino ma gli altri sono diversi.
    Provo con la PU18
    Il 6 è sempre DATA
    Il 5 è GATE WFCK pin 9 di Arduino
    Con la PU8 non trovo corrispondenze
    neanche con la scph-1001
    Però ho fatto solo una ricerca veloce.

    Edit:
    Ci sarebbe anche la tabella
    pin-9 = gate_wfck IC732.Pin-5 = WFCK
    pin-8 = data IC732.Pin-42 = CEO
    pin-7 = subq IC304.Pin-24 = SUBQ
    pin-6 = sqck IC304.Pin-26 = SQCK
    pin 5 = BIOS D2 IC102.Pin-15 = D2
    pin 4 = BIOS A18 Ic102.Pin-31 = A18
     
    #15
Sto caricando...

Condividi questa Pagina