0

私が開始したプログラム/プロセスに誰かが接続されているかどうかを確認する方法を探しています。

プロセスへのアタッチを無効にして、プログラムのリバース エンジニアリングを困難にしたいと考えています。

これはできますか?私のプロセスに何かが添付されているかどうかを確認し、そうであればプロセスを終了するAPI呼び出しがありますか。

私の理解では、コードでこれをチェックできる、またはチェックできるはずです。これが真実であることがわかった場合は、自分自身または自分に付けられたものを殺すことができます。

#if DEBUG
RTBconsole.Text = "Debug version";
#endif

これは、プロセスで行われている添付フォームを停止できるようにしたいコードのデバッグを停止しただけです。

4

2 に答える 2

4

いくつかの戦略...

#1:

デバッガーの存在を検出するための API がいくつかあります

ただし、ここには明らかな制限があります。デバッガーが実行を中断した場合、このチェックは明らかに役に立ちません。したがって、これは防水ではありません。

#2:

関心のあるプロセスに独自のデバッガーをアタッチします。そうすれば、ユーザーは自分自身をアタッチできません (プロセスは同時に 1 回しかデバッグできません)。

もちろん、ユーザーはデバッガー プロセスを強制終了することもできます。

または、防止または検出できないカーネル デバッガーを使用します。

これは結論につながります。あるレベルでは、ユーザーがシステムに完全にアクセスできる限り、ユーザーはやりたいことを何でも実行できます。それを回避するための初心者ハッカー。

于 2011-10-27T15:58:13.190 に答える