射手座の日
再び 『 射手座の日 』に関しての レビューです 笑)
『 射手座の日 』で 長門が実際に打ち込んでいたと思われるプログラム内容を 確認している方がいました 「いつきログさん」
実際に 内容を少し変更する事で コンパイルも可能のようですね
テキストエディタも開いてないので あれが長門が書いたのなら 「copy con SimInject.cc」で ダイレクトに 書いてたということになりますね
つまり conとはデバイス名を表していて キーボード入力を SimInject.ccに流し込むって事です
これは 誰でも出来るし 試してみると面白いかも・・・
( 普通に書いて改行していけばOKです ただし 行を確定すると戻れません これぞ長門クオリティ、 最後は Ctrl+Zで ^Zコードを入れて Enter )
プログラムをフックするということで 実行中の プログラムに対して 割り込みをすることが出来ます
分かりやすく言えば 操作をのっとったりできます、例えば 策敵モードを操作できないようにしてましたよね
プログラム書き換えも行っていたでしょうけど 基本的には PARのようなパラメータの強制書き換えを やっていたのでしょう*1
じゃあ あのプログラムは ホントに長門が書いたものなのか? という疑問ですが それは
長門が キョンに同意を求めるシーンで
によって 処理開始を確認する ダイアログボックス(メッセージボックス)を開いている事から あのプログラムは長門のものと分かります
まぁ MB_OK定数で OKボタンしか表示しないようにしてるだけに 長門が やる気(殺る気? 笑)まんまん なのが分かりますけど 笑)
ちなみに あのプログラムじゃ 普通にダイアログを閉じても 後のプログラムは実行されてしまう 笑)
中止させたいなら コマンドプロンプトの方でCtrl+Cとか タスクマネージャーでプログラム本体をやめさせないと駄目ですね
でも そうなると そのプログラムが 実行されているのは 長門のパソコンなんですよね・・・
ローカルで プロセスのハンドルを取得しても 長門のノートの プロセスのハンドルしかゲットできないんですよ
よって SOS団メンバー や コンピ研側には サーバー的な 同種の処理をするプログラムを作って 送り込んで あらかじめ 実行させておいて
自分のノートの OKボタンクリック を トリガーにして 一斉に 全体で チートするようにしたと考えるのが 素直な考え方かも・・・
あと 前のレビューの時に 私が 引っかかっていた部分を 詳しく説明すると、 ERRORダイアログを開くというのが この部分で
関数が失敗したら あっさり ERRORダイアログを開いて 終わるようにしてるんですよね・・・
長門なら そこら辺も 完璧に想定出来るはずだから if ブロックの中には さらに別の手段でアタックするような
アグレッシブなプログラムになってなかったのが ちょっと残念だったりしたのです・・・
でもまぁ 普通 アニメでここまですることは無いんで 素直に評価すべきですね 笑)
『 射手座の日 』で 長門が実際に打ち込んでいたと思われるプログラム内容を 確認している方がいました 「いつきログさん」
実際に 内容を少し変更する事で コンパイルも可能のようですね
テキストエディタも開いてないので あれが長門が書いたのなら 「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 ); } |
長門なら そこら辺も 完璧に想定出来るはずだから if ブロックの中には さらに別の手段でアタックするような
アグレッシブなプログラムになってなかったのが ちょっと残念だったりしたのです・・・
でもまぁ 普通 アニメでここまですることは無いんで 素直に評価すべきですね 笑)
*1:PARでもプログラム書き換えによるチートも可能です