魔法使いの夜というノベルゲーム(詳細はググって)がありますが
Windows8 64bit(のConsumer Preview)では動作しません。
2013/01/14追記:すでに公式で修正パッチが出ています、単純に魔法使いの夜をプレイしたいだけの人は公式のサポートページへGO。
動作しない理由は簡単、不正行為防止用のプロテクトが不正環境だと誤認しているからです。
このページではWindows8 64bitで魔法使いの夜をプレイする方法と、その原理を説明します。
説明とかいいからうごかし方だけ教えろという方向けの完成品。
Win8WOH.zip
使い方はzipの中のversion.dllを魔法使いの夜.exeと同じディレクトリに置く、それだけ。
なぜWindows8では動かないのか
plugin/魔法使いの夜.tpmがプロテクトなどなどを行っているDLLで
(拡張子がdllじゃないですが、中身は普通のdllです。 KIRIKIRIプラグインなので拡張子がtpmなだけ)
起動時に読み込まれているKernel32.dllが正規のシステムディレクトリ以下に配置されているものかどうかのチェックをしています。
ですが、この確認方法に問題があって
確認用パス取得に使用しているGetModuleFileNameAは
Windows7 64bitであれば%windir%SysWOW64以下と返しますが、Windows8 64bitであれば%windir%System32以下と返します。
魔法使いの夜.tpmは必ずSysWOW64の法のパスを返す前提で動作しているため、Windows8では不正な環境であるとみなされ起動しなくなるのです。
ちなみに、MSDN上ではどちらの挙動になるとも言及されていません。
つまり未規定の動作に頼っていることになるので、あまり行儀のいいこととは言えません。
どうやって動くようにしたのか
動くようにするのは簡単で、GetModuleFileNameAが%windir%SysWOW64以下のパスを返すようになればいいわけです。
起動時に読み込むDLLのダミーをアプリケーションと同じディレクトリに配置して読み込ませ
IATテーブルという外部DLL呼び出しに使う部分のGetModuleFileNameA部分を自作関数へ向くように書き換え
そこでKernel32.dllを対象としているときのみ、SysWOW64以下のパスを返すようにしました。
終わりに
実は魔法使いの夜はexe本体やtpmなどにパッチをあてるとプロテクトに引っかかって起動できなくなります。
今回の目的はプロテクトを解除することではないので、プロテクト対象外のdllのダミーを使うことで実現しています。
dllを署名するなど仕組みが分かっていても破るのが難しいプロテクトを入れるのは素晴らしいのですが
今回のような、MSDNに記述されていない細部の挙動に頼った幼稚なプロテクトはやめていただきたいところ。
ほんと、署名部分は素晴らしいのになぁ。
2013/01/14追記:
いろいろなところからリンクされててびっくりしました。
どうやら魔法使いの夜に限らず、ワムソフト版と呼ばれる吉里吉里エンジンを使用したゲーム全般で発生する問題だったようで、
なまじ汎用的に作っちゃったのでどのゲームもこれで動くようになった、ということらしいです。
ワムソフトさんではすでに対応版を出しているらしく、動きの速いところでは公式で修正パッチが出ているそうなので、出ているものはそちらを使いましょう。
それでもだめなら、だめもとで使ってみるといいかも?
動作確認していないのでちゃんと動くかは保証しかねますが。
起動できました!!ありがとうございました!!
天神乱漫をこれで起動させました! ありがとうございました!
弦月のパンドオラ、動きました。ありがとうございます!
ヴァルプルギス、動きました。ありがとです~
斬死刃留動いた♪
失われた未来を求めて、おかげさまで起動できました。本当にありがとうございます!
8では起動しない事を知らないで買ってしまった妹スタイルを起動できました!ありがとうございます!
あんたはすごい!あきらめていた失われた未来を求めてが無事起動出来ました!!感謝です
幼馴染は大統領が開けました!ホントにありがと!
ありがとう…!
dracu-riot!起動できました。大感謝です!
ユユカナ動きました。ありがとうございます。
ありがとうございます
11eyesRF起動出来ました
ありがとうございます!
relations sister×sisterの起動ができました!
深謝します
お世話になりました。ありがとうございます。
天真爛漫の体験版、動作しました、ありがとうございます。
ユユカナの場合具体的にどうしたらいいですか?できれば、おしえてもらいたいです。。。
yuyukana.exeと同じディレクトリにWin8WOH.zipの中のversion.dllを配置して、あとは通常通りyuyukana.exeを起動するだけでいいはずです。
ただし、非公式パッチであるのと、一般にウイルスも使う技術を用いているため、動かない環境もあります。
その場合、一個人である私ではどうにもできないのであきらめてください。
有り難う御座います、有り難う御座います
11eyes resona forma が Win8 で起動できました!
ありがとう!コンチェルトノートとかその他30くらいのゲームが動いたよ!
あんたは神や!
ヴァルプルギス、起動できました。
助かりました。
利用させていただきました。ありがとうございます
それにしてもすごい知識と技術ですね・・・
PCにはまったく疎いため感心しきりです
利用させていただいたところ、驚くことに「ユユカナ」などがwindows8.1でも動きました!あなたは神です!ありがとう!感謝感謝!
メーカーさんが解散してしまったゲームが動かなくて困ってたので本当に助かりました!
こういうの考えられるのって凄いと思います!
ありがとうございました!
晴れときどきお天気雨ができました!!
1日悩んでいたのに!!
ありがとうございます!!
絶対可憐!お嬢様っ
動きました!!! 本当にありがとうございます!!
ソラハネ AQUA Windows8.1 で起動できました。
お陰様でサクサク快適にプレイを楽しめています。
ありがとうございました!!
ありがとうございます
自分もパソコン勉強してみようと思います
起動できずにインストール→放置していた
光輪の町、ラベンダーの少女 他7つが起動できるようになりました!
頼り切りで申し訳ないですが、ほんにありがとうございます!
春ポコ起動できました。
ありがとうございます!
失われた未来を起動することができました、ありがとうございます。
助かりました 有難う御座います
失われた未来を求めてが無事、Win8.1で動きました。ありがとうございます。
この世には天才がいるのだと知ることができてよかった。
ありがとう
当方のようなPC初心者にも非常にわかりやすい解説で感謝しています。
参考にしたいと思います。
アニメ見て再燃。実家から持ってきた、失われた未来を求めてが無事、Win8.1で動きました。ありがとうございます。
吉里吉里が使われているのはなんでも使用可能っぽいですね。失われた未来を求めてのフォルダにいれて起動確認。
ヴァルプルギスが起動しました
本当にありがとうございました
あなたは天才です ありがとうございます。
神様と呼んでいいですか
助かりました!
ありがとうございます
“ETOILES”の『カラフル☆きゅあー』も問題無く起動できました!
ありがとうございました!
windows8では無理だと思っていたSORAHANEのAQUAをあっさり起動できました!
ありがとうございます!
ありがとうございます!!
AQUA起動できました。ほんとにありがとうございます
Hontoni tasukari mashita.Arigatou gozaimasu..
桜ノーリプライ起動できませんでした
読み込みエラーになります
残念‥
しとろんソフトの『妹スマイル』が起動できないのですが、この方法では駄目なのでしょうか?