CloneCDの日本語化の仕組みについて
CloneCDは普通の方法では文字化けしてしまって日本語化できないので、かなり特殊で強引なやり方をします。この手法を再現するにはプログラミングが必要になります。 CloneCD.exeを書き換えてもエラーを出さない方法
CloneCD.exeは起動時に自分自身の内容をチェックします。起動してかなり早い時期にCreateFileを呼び出してCloneCD.exeのファイルハンドルを取得し、CreateFileMappingでマップして内容をチェックするようです。チェックの結果自分自身の内容が変更されているとその旨のエラーメッセージを表示して終了してしまいます。
そこでCloneCD.exe内のkernel32.dllに対する呼び出しをCloneCD.jに対する呼び出しに書き換えます。CloneCD.jにはCloneCDが使うkernel32.dll内の関数がすべてエクスポートしてあります。そしてCreateFileの動作を少し変更します。CreateFileはCloneCD.exeのファイルハンドルを要求されたときに、代わりにCloneCD.oldのファイルハンドルを返すようにします。
このようにして、CloneCD.oldの内容さえ変更しなければ、CloneCD.exeの内容をいくら書き換えてもCloneCDはエラーを出さなくなります。 フォントを日本語フォントに変える方法
基本的には上と同じ事です。user32.dll内のCallWindowProcとDefWindowProcでWM_SETFONTメッセージが送られたときに、設定フォントを日本語のフォントにすり替えます。
これを次のようにします。
以上が基本的な仕組みです。ここからもう一工夫して、CloneCD.jができます。 | ||||||||||||||||||||||||||||||||||||||||||||||
二重セクタについてのあれこれ
CD-ROMに記録されるデータはセクタに分けて記録されます。各セクタには番号がふってあり、番号順に並べて記録されます。各セクタには2048バイトのデータが入り、データを読むときはセクタの番号を指定して読み込むことで目的のデータを取り出します。たとえば9つのセクタが次のように並んでいると仮定します。 三重セクタ
二重セクタはプロテクトとしてそれなりの性能を発揮するようですが、二重セクタの存在を知っている人には簡単にコピーされてしまいます。まず普通にイメージを作成し、次にCD-ROM全体を後ろから順番に読み込みながら先に作成したイメージと比較すれば二重セクタの位置や大きさ、内容などが全てわかってしまうからです。 多重セクタの弱点
多重セクタを含むCD-ROMを前から順に読み込んでいくと、途中が読み飛ばされてしまうわけですが、どこが読み飛ばされたかを知ることができればその部分を後ろから前へ読み込んでいくことで隠されたセクタの内容を読み込めます。
縦の線はその部分で読み込みに時間がかかっていることをあらわします。左側がCD-ROMの前の方で右が後ろの方です。プロテクトの読み込み結果を見ると右のほうに二箇所、怪しげな線があります。この線の間がCの部分で、ここに多重セクタがあるとわかってしまいます。 | ||||||||||||||||||||||||||||||||||||||||||||||
トップページ http://park14.wakwak.com/~natsume/ 連絡先 master@chiyoclone.net PGP PUBLIC KEY |