アーケード基盤 Typex2ハッキングについて、補足

先日書いたTypeXネタで、
開発サイドの人から質問があった為、
もうちょっと細かい話をしてみようと思います。
(Microsoft様、及び、TAITO様、問題があったら速攻警告ください。記事削除しますので)


TypeXとは何かと申しますと
Phoenix社製のMicroATXマザーボード(Specは仕様見てください。)と、
Windows Embedded がインストールされたHDDと、
それに含まれたTypeXシステムファイルの総称だと考えてください。


Windows EmbeddedWindowsXPの亜種みたいなもので、
ほぼ同じものと考えていただいて構いません。
それを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…DirectXDirectinputを実現
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でゲームを開発される企業様は、
どうかゲーム実行中に、せめてユーザーがプログラムを他タスクに移せないような機能を
盛り込むようご検討下さい。


アーケードゲーム業界の発展と、
対戦格闘ゲームの存続を願って。