Setelah merilis
Buku Hitam DOOM, saya pergi berlibur ke Jepang, di mana saya berhasil bermain Ikaruga di mesin arcade nyata di ruang game Taito HEY di kuartal Akihabara Tokyo. Pengalaman ini kembali membangkitkan minat saya pada konsol video game SEGA terbaru - Dreamcast.
Di jaringan Anda dapat menemukan banyak dokumen yang sangat memudahkan proses mempelajari masalah ini. Ada dua sumber yang luar biasa yang dapat dengan cepat membuat orang mendapatkan informasi terkini: situs web Marcus Comstedt yang luar biasa, yang menjelaskan semuanya hingga ke register GPU, dan sumber daya Jockel
"Mari kita buat game untuk Sega Dreamcast dari awal .
"Ketika saya mempelajari mobil itu, saya menemukan sebuah kisah yang luar biasa tentang bagaimana peretas dengan cepat merusak perlindungan terhadap gim-gim permainan dan menghancurkan harapan perangkat keras terbaru SEGA.
Tingkat perlindungan pertama: GD-ROM
Di atas kertas, perlindungan salinan untuk SEGA Dreamcast tampak sangat kuat. Permainan dikirim pada media khusus yang disebut GD-ROM, yang hanya bisa diproduksi oleh SEGA. GD adalah singkatan dari "Gigabyte Disc" ("gigabyte disk"), yaitu peningkatan kepadatan perekaman memberikan volume maksimum 1 GB, yang jauh lebih dari kemampuan CD-ROM konvensional (700 MB).
GD-ROM memiliki dimensi fisik yang sama dengan CD-ROM, tetapi pada tingkat makro, itu terdiri dari dua area yang dapat dibedakan dengan mata telanjang.
Zona (gelap) pertama adalah wilayah kepadatan rendah yang kompatibel dengan CD-ROM yang berisi hingga 35 MB. Itu berisi trek audio suara yang mengingatkan pengguna bahwa isi disk dimaksudkan untuk SEGA Dreamcast, dan bukan untuk pemutar CD
[1] . Juga, pengembang menambahkan trek di sana dengan file teks, misalnya, informasi hak cipta, dan kadang-kadang materi promosi, misalnya, seni dari permainan.
Area dengan kepadatan tinggi (cahaya) disimpan hingga 984 MB
[2] dan semua konten permainan berada di sana.
Tampaknya mustahil bagi peretas untuk mengeluarkan game dari disk dan membakarnya lagi untuk distribusi.
Booting dari GD-ROM: IP.BIN dan 1ST_READ.BIN
Sebelum kita berbicara tentang bagaimana bajak laut berhasil menyalin permainan, kita perlu memahami urutan pemuatan. Dreamcast tidak memiliki sistem operasi. Ada kesalahpahaman populer bahwa ia menggunakan Windows CE, tetapi pada kenyataannya, OS Microsoft hanyalah sebuah perpustakaan statis tambahan yang dapat disambungkan oleh pengembang Dreamcast untuk menggunakan DirectX, DirectInput, dan DirectSound
[3] . Dalam beberapa game, WinCE digunakan
[4] , tetapi di sebagian besar (misalnya, Ikaruga) itu tidak digunakan. Terlepas dari apa yang digunakan pengembang, game dengan OS dan Dreamcast yang terhubung penuh selalu dimulai dengan cara yang sama.
Selama penggunaan normal dan peluncuran game resmi di Dreamcast yang baru diaktifkan, BOOTROM diluncurkan, memuat program bootstrap dari GD-ROM ke dalam RAM. Program mungil ini, terletak di jalur GD-ROM terakhir dan dikenal masyarakat sebagai "IP.BIN", menampilkan layar berlisensi SEGA dan melakukan dua level boot untuk mengatur register perangkat keras, membuat tumpukan CPU, dan menginisialisasi VBR
[5] .
Lebih penting lagi, IP.BIN berisi nama game executable. Nama ini dicari dalam sistem file GD-ROM dan dimuat ke dalam RAM pada 0x8C010000, setelah itu program dipindahkan ke sana. Biasanya, yang dapat dieksekusi bernama “1ST_READ.BIN”.
Setelah CPU masuk ke alamat 0x8C010000, permainan dimulai sebagaimana mestinya.
Tingkat perlindungan kedua: scrambler ransomware
Kemungkinan teoritis peretasan muncul karena kemampuan Dreamcast yang tampaknya tidak signifikan untuk melakukan booting bukan dari GD-ROM, tetapi dari CD-ROM. Awalnya, fungsi ini disebut "MIL-CD" dirancang untuk menambahkan fungsi multimedia ke CD musik, tetapi praktis tidak digunakan, dengan pengecualian tujuh aplikasi karaoke.
Insinyur SEGA mengerti bahwa memuat MIL-CD dapat digunakan sebagai vektor serangan, sehingga mereka menambahkan perlindungan. Ketika konsol mengenali CD-ROM, BOOTROM mengunduh IP.BIN dengan cara biasa, tetapi dienkripsi 1ST_READ.BIN, pada pandangan pertama secara acak. Eksekusi kerja berubah menjadi hash kacau yang menyebabkan konsol membeku.
Dari sudut pandang ini, konsol tersebut tampaknya dilindungi dengan andal. Dreamcast dapat mengenali salinan permainan yang bajakan, merusak file yang dapat dieksekusi selama proses pengunduhan dan mengalahkan para pembajak.
Sajikan pedangku yang panjang!
Masalah dengan file yang rusak diselesaikan ketika pada akhir tahun 1999 SDK Katana (SDK Sega resmi untuk Dreamcast) dicuri oleh tim peretas Utopia
[6] . Ternyata pengacak itu tidak lebih dari implementasi prinsip “keamanan melalui ketidakjelasan”. SDK berisi pengacak mundur, yang mengubah executable yang benar menjadi "hash mundur," yang lagi-lagi menjadi executable setelah memuat dan berebut dengan konsol Dreamcast ketika boot dari CD-ROM.
Mengambil game dengan GD-ROM-nya
SDK yang dicuri adalah semua yang dibutuhkan perompak. Berkat kemampuan menjalankan kode pada mesin, Dreamcast sekarang dapat digunakan bukan sebagai konsol game, tetapi sebagai drive GD-ROM. "Kabel encoder" dari SDK
[7] memungkinkan untuk menghubungkan konsol ke PC dan membuat koneksi fisik. Agar konsol membuang konten trek GD, file yang dapat dieksekusi khusus ditulis. Kemudian diacak kembali dan dibakar ke CD-ROM untuk mengeluarkan semua data 1 GB melalui port serial konsol. Itu adalah proses yang rawan kesalahan yang memakan waktu hingga 18 jam
[8] [9] . Hasilnya disimpan dalam format ".gdi" yang dibuat khusus.
ikaruga.gdi 153 byte
track01.bin 13 982 640 byte
track02.raw 2,088,576 byte
track03.bin 1 185 760 800 byte
Fakta yang menarik : Anda dapat melihat bahwa jumlah total data bukan 1 GB, seperti yang disebutkan di atas, tetapi 1,2 GB. Ini karena sektor GD-ROM 2352 byte mengikuti format Buku Merah, yang menggunakan 12 byte untuk sinkronisasi, 4 byte untuk header, 2048 byte untuk payload, dan 288 byte untuk Error Detection Code / Error Correcting Code
[10 ] $ cat ikaruga.gdi
3
1 0 4 2352 track01.bin 0
2 5945 0 2352 track02.raw 0
3 45000 4 2352 track03.bin 0
Cara memasang GD-ROM 1000 megabyte ke CD-ROM 700 megabyte
Agar sesuai dengan gim dengan CD-ROM 700 megabyte, sumber daya gim dikerjakan ulang. Sistem file ISO-9660 yang digunakan dalam GD-ROM membuatnya mudah untuk mengubah diskritisasi video dan musik, serta sepenuhnya menghapusnya. Namun, untuk sebagian besar game, proses yang rumit tidak diperlukan karena mereka tidak menempati seluruh 1 GB. Misalnya, Treasure's Ikaruga hanya membutuhkan 150 MB, dan sebagian besar kontennya diisi dengan nol. Dalam kasus seperti itu, cukup mengedit data isi sudah cukup.
Faktanya, ISO-9660 adalah format yang sangat terkenal sehingga bahkan skrip Python (mis.
Gditools.py ) ditulis untuk
mempelajari konten arsip .gdi.
Pengemasan dan distribusi
Dua tahap terakhir dari proses adalah membalikkan 1ST_READ.BIN dan mengemas semua informasi dalam arsip .cdi sehingga
DiscJuggler dapat membakar gambar ke CD-R. Hasil yang diperoleh bekerja tanpa masalah pada vanilla Dreamcast apa pun tanpa perlu chip modifikasi.
Reaksi dan konsekuensi SEGA
SEGA dengan cepat merilis versi kedua dari konsol DC dengan MIL-CD sepenuhnya dinonaktifkan, tetapi kerusakan telah dilakukan. Setelah penurunan besar dalam pendapatan dan pelepasan PS2 yang bersaing, pengembang meninggalkan Dreamcast dan SEGA meninggalkan pengembangan peralatan, berfokus sepenuhnya pada pembuatan perangkat lunak.
Referensi
[1] Sumber:
Workshop SEGA GD[2] Sumber:
segaretro.org: GD-ROM[3] Sumber:
Microsoft Mengumumkan Windows CE Toolkit untuk Dreamcast[4] Sumber:
Game Dreamcast yang menggunakan Windows CE[5] Sumber:
IP.BIN dan 1ST_READ.BIN[6] Sumber:
Ayo buat game Sega Dreamcast dari awal[7] Sumber:
PC Serial Adapter[8] Sumber:
Pandangan yang lebih akurat dan mendalam tentang keamanan Dreamcast[9] Sumber:
Cara yang lebih cepat dirancang terakhir, menggunakan konektor broadband DC[10] Sumber:
Mitos Dreamcast: Kapasitas Penyimpanan GD-ROM