射手座の日

 再び 『 射手座の日 』に関しての レビューです 笑)

 『 射手座の日 』で 長門が実際に打ち込んでいたと思われるプログラム内容を 確認している方がいました 「いつきログさん
実際に 内容を少し変更する事で コンパイルも可能のようですね
テキストエディタも開いてないので あれが長門が書いたのなら 「copy con SimInject.cc」で ダイレクトに 書いてたということになりますね
つまり conとはデバイス名を表していて キーボード入力を SimInject.ccに流し込むって事です
これは 誰でも出来るし 試してみると面白いかも・・・
( 普通に書いて改行していけばOKです ただし 行を確定すると戻れません これぞ長門クオリティ、 最後は Ctrl+Zで ^Zコードを入れて Enter )

 プログラムをフックするということで 実行中の プログラムに対して 割り込みをすることが出来ます
分かりやすく言えば 操作をのっとったりできます、例えば 策敵モードを操作できないようにしてましたよね
プログラム書き換えも行っていたでしょうけど 基本的には PARのようなパラメータの強制書き換えを やっていたのでしょう*1

 じゃあ あのプログラムは ホントに長門が書いたものなのか? という疑問ですが それは
長門キョンに同意を求めるシーンで
MessageBox(NULL,_TEXT("Start simurator and hit return key!!"),_TEXT("Simulator Injector"),MB_OK);
によって 処理開始を確認する ダイアログボックス(メッセージボックス)を開いている事から あのプログラムは長門のものと分かります
まぁ MB_OK定数で OKボタンしか表示しないようにしてるだけに 長門が やる気(殺る気? 笑)まんまん なのが分かりますけど 笑)
ちなみに あのプログラムじゃ 普通にダイアログを閉じても 後のプログラムは実行されてしまう 笑)
中止させたいなら コマンドプロンプトの方でCtrl+Cとか タスクマネージャーでプログラム本体をやめさせないと駄目ですね

 でも そうなると そのプログラムが 実行されているのは 長門のパソコンなんですよね・・・
ローカルで プロセスのハンドルを取得しても 長門のノートの プロセスのハンドルしかゲットできないんですよ
よって SOS団メンバー や コンピ研側には サーバー的な 同種の処理をするプログラムを作って 送り込んで あらかじめ 実行させておいて
自分のノートの OKボタンクリック を トリガーにして 一斉に 全体で チートするようにしたと考えるのが 素直な考え方かも・・・

 あと 前のレビューの時に 私が 引っかかっていた部分を 詳しく説明すると、 ERRORダイアログを開くというのが この部分で

  HANDLE hProcessSnapshot;
  HANDLE hProcess;
  PROCESSENTRY32 pe32;
  hProcessSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
  if (hProcessSnapshot == INVALID_HANDLE_VALUE)
  {
    MessageBox(NULL,_TEXT("CreateToolhelp32Snapshot"),_TEXT("ERROR"),MB_OK);
    return( FALSE );
  }
  pe32.dwSize = sizeof( PROCESSENTRY32 );
  if ( Process32First(hProcessSnapshot,&pe32))
  {
    MessageBox(NULL,_TEXT("Process32First"),_TEXT("ERROR"),MB_OK);
    return ( FALSE );
  }
関数が失敗したら あっさり ERRORダイアログを開いて 終わるようにしてるんですよね・・・
長門なら そこら辺も 完璧に想定出来るはずだから if ブロックの中には さらに別の手段でアタックするような
アグレッシブなプログラムになってなかったのが ちょっと残念だったりしたのです・・・

 でもまぁ 普通 アニメでここまですることは無いんで 素直に評価すべきですね 笑)

*1:PARでもプログラム書き換えによるチートも可能です