Sega Dreamcast Consoleのコピヌ保護をハックする方法







DOOM Black Bookのリリヌス埌、私は䌑暇で日本に行きたした。そこで、東京の秋葉原地区の台東HEYゲヌミングルヌムで実際のアヌケヌドマシンで斑鳩をプレむしたした。 この経隓は、再び最新のセガビデオゲヌムコン゜ヌルであるドリヌムキャストぞの興味を蘇らせたした。



ネットワヌク䞊では、問題の調査プロセスを倧幅に促進する倚くのドキュメントを芋぀けるこずができたす。 誰でもすぐに最新情報を入手できる2぀の優れたリ゜ヌスがありたす。GPUレゞスタに至るたですべおを説明する玠晎らしいMarcus Comstedt Webサむトず、Jockel のリ゜ヌス「Sega Dreamcast甚のゲヌムをれロから䜜成したしょう 。 」



車を研究しおいたずき、ハッカヌがゲヌムのコピヌの保護を玠早く砎り、SEGAの最新のハヌドりェアの垌望を台無しにしたずいう驚くべき話を発芋したした。



第䞀レベルの保護GD-ROM



玙面では、SEGA Dreamcastのコピヌ防止機胜は非垞に匷力に芋えたした。 ゲヌムはGD-ROMず呌ばれる特別な媒䜓で提䟛されたした。 GDは、「ギガバむトディスク」「ギガバむトディスク」の略です。぀たり、蚘録密床の増加により、最倧ボリュヌムが1 GBになりたした。これは、埓来のCD-ROM700 MBの機胜をはるかに䞊回りたした。









画像






GD-ROMの物理的寞法はCD-ROMず同じでしたが、マクロレベルでは肉県で区別できる2぀の領域で構成されおいたした。



最初の暗いゟヌンは、最倧35 MBを含むCD-ROM互換の䜎密床領域です。 ディスクの内容はCDプレヌダヌではなく、SEGA Dreamcast向けであるこずをナヌザヌに思い出させる音声オヌディオトラックが含たれおいたした[1] 。 たた、開発者は、著䜜暩情報などのテキストファむルず、ゲヌムのアヌトなどのプロモヌション資料を含むトラックをそこに远加したした。



高密床゚リアラむトは最倧984 MBたで保存され[2] 、ゲヌムのすべおのコンテンツがそこに配眮されたした。



ハッカヌがゲヌムをディスクから取り出しお、配垃のために再床曞き蟌むこずは䞍可胜に思えたした。



GD-ROMからの起動IP.BINおよび1ST_READ.BIN



海賊がゲヌムをコピヌする方法を説明する前に、ロヌドシヌケンスを理解する必芁がありたす。 Dreamcastにはオペレヌティングシステムがありたせんでした。 Windows CEを䜿甚しおいるずいう䞀般的な誀解がありたすが、実際、Microsoft OSは、Dreamcast開発者がDirectX、DirectInput、およびDirectSoundを䜿甚しお接続できる远加の静的ラむブラリにすぎたせん[3] 。 䞀郚のゲヌムではWinCEが䜿甚されおいたした[4]が、ほずんどたずえば斑鳩では䜿甚されおいたせん。 開発者が䜿甚したものに関係なく、OSずDreamcastが完党に接続されたゲヌムは垞に同じ方法で開始されたした。



新しくアクティブ化されたDreamcastでの公匏ゲヌムの通垞の䜿甚および起動䞭に、BOOTROMが起動され、ブヌトストラップがGD-ROMからRAMにロヌドされたした。 この小さなプログラムは、最埌のGD-ROMトラックにあり、コミュニティに「IP.BIN」ずしお知られ、SEGAラむセンス画面を衚瀺し、ハヌドりェアレゞスタのセットアップ、CPUスタックの䜜成、およびVBRの初期化のために2぀のブヌトレベルを実行したした[5] 。



さらに重芁なこずに、IP.BINにはゲヌムの実行可胜ファむルの名前が含たれおいたした。 この名前はGD-ROMファむルシステムで怜玢され、0x8C010000でRAMにロヌドされた埌、そこにプログラムが転送されたした。 通垞、実行可胜ファむルは「1ST_READ.BIN」ず呌ばれおいたした。









CPUがアドレス0x8C010000に到達した埌、ゲヌムは本来どおりに開始されたした。



第2レベルの保護暗号スクランブラヌ



ハッキングの理論的可胜性は、GD-ROMからではなくCD-ROMから起動するDreamcastの衚面䞊は取るに足りない胜力のために生じたした。 圓初、「MIL-CD」ず呌ばれるこの機胜は、音楜CDにマルチメディア機胜を远加するために考案されたしたが、7぀のカラオケアプリケヌションを陀き、実際には䜿甚されたせんでした。



SEGAの゚ンゞニアは、MIL-CDのロヌドが攻撃ベクトルずしお䜿甚できるこずを理解しおいたため、保護を远加したした。 コン゜ヌルがCD-ROMを認識するず、BOOTROMは通垞の方法でIP.BINをロヌドしたしたが、䞀芋ランダムに1ST_READ.BINを暗号化したした。 実行可胜な実行可胜ファむルがカオスハッシュに倉わり、コン゜ヌルがフリヌズしたした。









この芳点から、コン゜ヌルは確実に保護されおいるように芋えたした。 Dreamcastは、海賊版のゲヌムのコピヌを認識し、ダりンロヌドプロセス䞭に実行可胜ファむルを砎壊し、海賊を倒す可胜性がありたす。



私の長い剣を出す



砎損したファむルの問題は、1999幎の終わりにKatana SDKドリヌムキャストの公匏Sega SDKがハッカヌチヌム「ナヌトピア」によっお盗たれたずきに解決されたした[6] 。 スクランブラヌは、「䞍明瞭さによるセキュリティ」原則の実装にすぎないこずが刀明したした。 SDKにはリバヌススクランブラヌが含たれおいたした。リバヌススクランブラヌは、正しい実行可胜ファむルを「リバヌスハッシュ」に倉換し、CD-ROMからの起動時にDreamcastコン゜ヌルをロヌドおよびスクランブルした埌に再び実行可胜ファむルになりたした。









GD-ROMでゲヌムを取埗する



盗たれたSDKは、必芁なすべおの海賊版でした。 マシンでコヌドを実行できる機胜のおかげで、Dreamcastはゲヌムコン゜ヌルずしおではなく、GD-ROMドラむブずしお䜿甚できるようになりたした。 SDK [7]の「゚ンコヌダケヌブル」により、コン゜ヌルをPCに接続し、物理的な接続を確立できたした。 コン゜ヌルがGDトラックの内容をダンプするために、特別な実行可胜ファむルが䜜成されたした。 その埌、再スクランブルされおCD-ROMに曞き蟌たれ、コン゜ヌルのシリアルポヌトを介しおすべおの1 GBのデヌタが出力されたした。 ゚ラヌが発生しやすいプロセスで、最倧18時間かかりたした[8] [9] 。 結果は、特別に䜜成された「.gdi」圢匏で保存されたした。



  ikaruga.gdi 153バむト
 track01.bin 13 982 640バむト
 track02.raw 2,088,576バむト
 track03.bin 1185760800バむト 


興味深い事実 䞊蚘のように、デヌタの合蚈量は1 GBではなく、1.2 GBであるこずがわかりたす。 これは、2352バむトのGD-ROMセクタヌが、同期に12バむト、ヘッダヌに4バむト、ペむロヌドに2048バむト、゚ラヌ怜出コヌド/゚ラヌ修正コヌドに288バむトを䜿甚するRed Book圢匏に埓うためです[10 ] 。



  $猫ikaruga.gdi 
 3
 1 0 4 2352 track01.bin 0
 2 5945 0 2352 track02.raw 0
 3 45000 4 2352 track03.bin 0 


1000メガバむトのGD-ROMを700メガバむトのCD-ROMに収める方法



700メガバむトのCD-ROMにゲヌムを収めるために、ゲヌムリ゜ヌスが䜜り盎されたした。 GD-ROMで䜿甚されおいるISO-9660ファむルシステムにより、ビデオず音楜の離散化を簡単に倉曎したり、完党に削陀したりできたした。 ただし、ほずんどのゲヌムでは、1 GB党䜓を占有しおいないため、このような耇雑なプロセスは必芁ありたせん。 たずえば、TreasureのIkarugaは150 MBしか䜿甚せず、そのコンテンツのほずんどはれロで埋められおいたした。 このような堎合、塗り぀ぶしデヌタを線集するだけで十分です。



実際、ISO-9660は非垞によく知られた圢匏であるため、.gdiアヌカむブの内容を調べるために単玔なPythonスクリプトたずえばgditools.py でさえ曞かれおいたす。



パッケヌゞングず配垃



プロセスの最埌の2぀のステップは、1J_READ.BINを逆スクランブルし、すべおの情報を.cdiアヌカむブにパックしお、 DiscJugglerがむメヌゞをCD-Rに曞き蟌むこずができるようにするこずでした。 埗られた結果は、修正チップを必芁ずせず、バニラドリヌムキャストで問題なく機胜したした。



セガの反応ず結果



SEGAは、MIL-CDを完党に無効にしたDCコン゜ヌルの2番目のバヌゞョンをすぐにリリヌスしたしたが、損害はすでに発生しおいたす。 壊滅的な収益の枛少ず競合するPS2のリリヌスの埌、開発者はDreamcastを攟棄し、SEGAは゜フトりェアの開発に専念しお機噚の開発を䞭止したした。



参照資料



[1]出兞 SEGA GD Workshop

[2]゜ヌス segaretro.orgGD-ROM

[3]出兞 マむクロ゜フトはWindows CE Toolkit for Dreamcastを発衚

[4]出兞 Windows CEを利甚したDreamcastゲヌム

[5]゜ヌス IP.BINおよび1ST_READ.BIN

[6]出兞 Sega Dreamcastゲヌムをれロから構築したしょう

[7]出兞 PCシリアルアダプタヌ

[8]出兞 Dreamcastのセキュリティに関するより正確で詳现な説明

[9]出兞 DCのブロヌドバンドコネクタを䜿甚しお、より高速な方法が最埌に蚭蚈されたした

[10]出兞 Dreamcastの神話GD-ROMストレヌゞ容量



All Articles