アーケード基盤 Typex2ハッキングについて、補足
先日書いたTypeXネタで、
開発サイドの人から質問があった為、
もうちょっと細かい話をしてみようと思います。
(Microsoft様、及び、TAITO様、問題があったら速攻警告ください。記事削除しますので)
TypeXとは何かと申しますと
Phoenix社製のMicroATXマザーボード(Specは仕様見てください。)と、
Windows Embedded がインストールされたHDDと、
それに含まれたTypeXシステムファイルの総称だと考えてください。
Windows Embedded はWindowsXPの亜種みたいなもので、
ほぼ同じものと考えていただいて構いません。
それをTypeX用にカスタマイズしてあり、
(例えばスタートアップにTypeXシステム実行ファイルをキックするようになっています。)
さらにドングルとセットでゲームアプリをHDDにインストールしたものが、
いわゆる「TypeXソフト」として流通しています。
TypeXが提供しているシステムの役割分担は、
①TypeXマザーボードは、AGPバスのグラフィックカードと
PCIバスカードのJVSインタフェース/オンボードサウンド/リセットスイッチを提供(TypeX)
②WindowsEmbededは、起動時にTypeXシステム実行ファイルを起動(TypeX)
③TypeXシステム実行ファイルはドングルを参照し、
ドングルとアプリインストール時のキーが一致すれば、
(ドングルキーとHDDの型番、マザーボードがTypeXかどうか、あたりを参照してる様子)
インストール済みの、パッキングされたアプリをアンパックし、
仮想ドライブにデータをコピー(TypeX)
④TypeXシステム実行ファイルは 仮想ドライブに game.exe を検出したら起動(TypeX)
⑤game.exeを起動したら、一定時間毎にハートビートを確認し
アプリがフリーズしたりしていたら、強制的にOSリブートを実施(TypeX)
⑥TypeXシステム実行ファイルは、game.exe起動前にHOMEキーを押されたら
BIOS設定をソフトウェア上で行えるGUIを提供(TypeX)
⑦TypeXシステム実行ファイルは、ゲームアプリからOSリブート指示を受けたらOSリブートを提供(TypeX)
⑧ゲームアプリは、TypeXマザーボードに積んであるPCIバスカードから
JVSインタフェースの接続確認を行い、
接続されていなかったらI/Oエラーを表示して、TypeXシステム実行ファイルにリブート要求を発行(ゲームアプリ)
⑨ゲームアプリは、ディップ設定後にリブート要求を発行(ゲームアプリ)
みたいな機能分担になっており、
ゲーム屋は、⑧、⑨だけを意識して開発すればいいと
言われているのではないでしょうか?
しかし実際には③の処理が行われると、以降はアンパックされたデータが丸見え状態になります。
ゲームアプリは所詮Windowsの1アプリしか無い為、
プログラムの制御を他タスクに移されれば、そのデータはユーザー側で参照されてしまいます。
ということを踏まえて、
今回流出してしまった「BlazBlue」についてですが、
提供された情報を纏めると、以下のようになっているようです。
(念の為、私は実際にデータやエミュレータのダウンロードは行っておりません。
また、機能分担は予想です)
-
- -
【インストーラー部】
単に指定したディレクトリに
圧縮した下記ファイルをコピーしているだけのようです
【I/Oエミュレート部】
d3dx9_31.dll…DirectXのDirectinputを実現
detoured.dll…APIフックに使用
RUN.bat…typex_loader.exeをパラメーターgame.exeでキック
typex_bindings.bin…バインディング用
typex_config.exe…入出力を含めた設定用実行ファイル
typex_io.dll…d3dx9_31.dllを利用してJVSをエミュレート
typex_loader.exe…上記DLLを読み込み実際に実行した上で、指定された実行ファイルを起動
【ゲームアプリ部】
BlazBlueアンパックデータ(game.exeと、データディレクトリ)
-
- -
開発屋として、次に気にしないといけないことは、
では、上記I/Oエミュレートソフトを他のTypeXゲームアプリで使えるのか、ということですが、
結論から言いますと、YES、です。
(正直、上記部分のエミュレートは、
いわゆる他のゲーム機本体のエミュレータに比べれば
赤子の手を捻る程単純なものだと思いますし、
Windowsのドライバ開発をしたことある人なら、瞬殺で作ってしまうでしょう。)
ですので、今後TypeXでゲームを開発される企業様は、
どうかゲーム実行中に、せめてユーザーがプログラムを他タスクに移せないような機能を
盛り込むようご検討下さい。