他人の空似

2012 年 4 月 17 日

Windows8 64bitで魔法使いの夜をプレイ

Filed under: 未分類 — 中の人 @ 11:00 PM

魔法使いの夜というノベルゲーム(詳細はググって)がありますが
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追記:
いろいろなところからリンクされててびっくりしました。
どうやら魔法使いの夜に限らず、ワムソフト版と呼ばれる吉里吉里エンジンを使用したゲーム全般で発生する問題だったようで、
なまじ汎用的に作っちゃったのでどのゲームもこれで動くようになった、ということらしいです。

ワムソフトさんではすでに対応版を出しているらしく、動きの速いところでは公式で修正パッチが出ているそうなので、出ているものはそちらを使いましょう。
それでもだめなら、だめもとで使ってみるといいかも?
動作確認していないのでちゃんと動くかは保証しかねますが。

70 Comments »

  1. ダメです。
    本パッチは吉里吉里のワムソフト版の特定バージョンにだけ存在するバグを直すだけであり、いかなるゲームもWindows8で動かせるようにするものではありません。
    なので、別の方法をお探しください。

    コメント by 中の人 — 2015 年 7 月 15 日 @ 4:30 AM

  2. Windows7 – Windows10移行で発生した問題に適用できました。
    ありがとうございます。

    コメント by 匿名 — 2015 年 8 月 2 日 @ 12:36 PM

  3. Windows10でも動作させることができました。ありがとうございます!

    コメント by yu_ki0421 — 2015 年 8 月 20 日 @ 2:48 AM

  4. ありがとうございました。

    コメント by 匿名 — 2015 年 9 月 2 日 @ 10:17 PM

  5. AQUA起動しました!お世話になりました。
    ありがとうございます!!

    コメント by 匿名 — 2015 年 9 月 4 日 @ 7:22 PM

  6. 諦めかけていたAQUAが起動いたしました。
    本当にありがとうございます。

    コメント by 匿名 — 2015 年 9 月 6 日 @ 3:10 PM

  7. Windows10で起動させることができました!本当にありがとうございました!

    コメント by 匿名 — 2015 年 9 月 21 日 @ 2:35 AM

  8. WIN10で失われた未来を求めてを動かすことができました!

    本当にありがとうございます!

    コメント by 匿名 — 2015 年 9 月 30 日 @ 7:57 AM

  9. STEINS;GATE 変移空間のオクテットがWindows10で一度だけ起動できました。
    終了の際にエラーが発生し、次からはまた以前と同じエラーが発生して起動できなくなりました。
    再度インストールし直すとまた一度だけ起動できます。
    残念です。

    コメント by 匿名 — 2015 年 10 月 17 日 @ 10:23 AM

  10. 自分も「失われた未来を求めて」win10で動かすこと出来ました。
    ありがとうございましたm(_ _)m

    コメント by 匿名 — 2015 年 11 月 9 日 @ 7:17 PM

  11. Win10で起動できました!
    本当にありがとうございます!!

    コメント by 匿名 — 2015 年 12 月 18 日 @ 12:55 AM

  12. いやー助かったわwwww
    捨てる所だった・・・・

    コメント by 匿名 — 2016 年 1 月 13 日 @ 10:03 PM

  13. まほよ起動できました
    ありがとうございました!!解決しました

    コメント by 匿名 — 2016 年 2 月 18 日 @ 5:53 PM

  14. 諦めかけてたWin10で起動できました
    ありがとうございました!

    コメント by 匿名 — 2016 年 2 月 20 日 @ 10:58 PM

  15. 失われた未来を求めて、起動できました!ありがとうございました!

    コメント by ありがとう!! — 2016 年 2 月 28 日 @ 4:34 PM

  16. あなたのような人を、世は『神』と呼ぶ。
    ありがとうございました!!

    コメント by 匿名 — 2016 年 3 月 10 日 @ 4:15 PM

  17. 部室のPCにあった天神乱漫のデータ、これで起動することができました

    ありがとうございました~

    コメント by 匿名 — 2016 年 3 月 18 日 @ 1:24 AM

  18. Win10で無事「失われた未来を求めて」起動できました!!ありがとうございました!!

    コメント by ありがとう!! — 2016 年 4 月 13 日 @ 8:26 PM

  19. ありがとうございました!説明も非常に参考になりました。自分では出来そうにありませんが^^

    コメント by 匿名 — 2016 年 5 月 6 日 @ 11:39 PM

  20. われめてwindows10で起動できました とても助かりました

    コメント by 匿名 — 2016 年 8 月 22 日 @ 12:55 AM

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress