Win32API Windowsプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
うーの

Win32API Windowsプログラム

#1

投稿記事 by うーの » 15年前

Win32API Windowsプログラミング



protect.exeとtest.exeを用意する。protect.exeの役割は、 test.exe(任意)のopenprocess関数を他のプログラムができないように保護、フックするものです。

==========
protect.exe
==========

1)openprocessをフックしたいアプリケーション名を入力してください。とメッセージ。xxx.exeと入力されれば、xxx.exe(PIDも調べて)は起動されていません。
と、起動するまで待つ。

起動が確認できたら

2)xxx.exe PID:xx が起動されました。これからopenprocess関数を他のプログラムが呼び出せないようにします。

3)フック処理

xxx.exe PID(xxx) Protected sucessful

xxx.exe PID(xxx) Protected error


のように結果を変えします。

それからエンターキーを2回押せばフックの解除


4) printf("エンターキーを2回押せばフックを解除します"


解除処理



こういうのを考えております。サンプルお願いします。


※マルチポストな質問ですので、相互リンクします。


http://detail.chiebukuro.yahoo.co.jp/qa ... 1148544521


回答はいただいていますが、見てみたところよくわかりませんでした。 画像

softya

Re:Win32API Windowsプログラム

#2

投稿記事 by softya » 15年前

うーのさんマルチポストですよね。
http://detail.chiebukuro.yahoo.co.jp/qa ... 1048589220
このままだと利用規約違反なので、こちらの利用規約を読んでいただいて、
http://dixq.net/board/board.html
ぜひ、相互リンクにすることをお勧めします。

あと丸投げになっていますので、利用規約のテンプレートに沿って質問をお願いします。

dic

Re:Win32API Windowsプログラム

#3

投稿記事 by dic » 15年前

http://homepage2.nifty.com/c_lang/
ここのサイトの

第160章 メッセージフックの基礎
は参考になるでしょうか?

へろりくしょん

Re:Win32API Windowsプログラム

#4

投稿記事 by へろりくしょん » 15年前

いまいち何がしたいのかよく分かりません。

openprocess 関数というのは、Windows API の OpenProcess() API の事でしょうか。

>openprocess関数を他のプログラムができないように保護、フックするものです。
というのは、他のプロセスが呼び出す OpenProcess() APIをフックしたいということでしょうか。


ちょっと考えてみましたが、相当面倒です。 他にいい方法があるかもしれませんが、一応手順だけ書いておきます。

まず、他のプロセスを操作することになりますので、システムフックで実装することになりますので、フック用のDLLを作成します。
フック用のDLLには、OpenProcess() 関数の代替となる関数を定義します。

他のプロセスがDLLにアタッチしてきたら、そのプロセスのインポートセクションのアドレスを取得します。
そこから、インポートしているモジュール "kernel32.dll" を検索します。
そして、インポートネームテーブルと、インポートアドレステーブルを取得します。

インポートネームテーブルから、"OpenProcess" を探し、対応するインポートアドレステーブル内の OpenProcess 関数のアドレスを、先に定義した代替関数のアドレスに書き換えます。

これで実装出来るはずです。 多分。

うーの

Re:Win32API Windowsプログラム

#5

投稿記事 by うーの » 15年前

実装したいのは、よくあるオンラインゲームのデバッガ対策
の簡易版みたいなものです。

nProtect GameGuard
は、オンラインゲームのgame.exeにうさみみハリケーンなどのツールでプロセスを開こうとしても開くことができません。
ようは、game.exeのメモリを読んだり書いたりできないのです。
こういうのが作りたいです。

閉鎖

“C言語何でも質問掲示板” へ戻る