1

アプリケーション用の非公式のスタンドアロン プラグインのようなプログラムを作成しました。これにより、顧客は、ベンダーが所有するサービスよりも低価格の代替サービスを利用できます。私のプログラムは、いかなる種類の TOS に対しても違法ではなく、ウイルス、アドウェア、またはそのようなものでもありません。そうは言っても、もちろん、ベンダーは私が競争に勝つことに満足しておらず、私のアプリケーションの実行をブロックしようとしています。

彼は、人々が私のアプリを彼のアプリと一緒に実行するのを阻止するために、すでにいくつかの戦術を試しています. 彼は、それが検出された場合、アプリが偽のエラーをスローするようにしています。

最初に、彼は正しいタイトルの開いているウィンドウを探して、私のプログラムが実行されているかどうかを確認しました。起動時にプログラムのタイトルをランダム化することで、これに対抗しました。

次に、彼は実行中のプロセス名を探しました。[ランダム文字列].exeとして起動されたときにアプリ自体をコピーしてから実行することで、これに対抗しました。

とにかく、私の質問はこれです: 私のプログラムが実行されているかどうかを検出するために、彼は他に何ができますか? ウィンドウのテキスト (ステータス バー、ラベルなど) が読めることは知っています。ラベルを画像に置き換えることで、これに対抗する準備ができています (他の方法はありますか?)。

しかし、他に何がありますか?プログラムがロードした .dll を検出できますか? もしそうなら、ロードする前に dll 名をランダム化することで解決できますか?

プログラムのシグネチャをメモリ内で取得して追跡できることは知っていますが (ウィルス スキャナのように)、彼がそれを実行する可能性はおそらく高くありません。

これは彼がやっていることはちょっとくだらないことですが、それは一種の楽しいことです. それはオタクの拳の戦いのようなものです。

編集: プラグインだと言ったとき、それは私が使用した(間違った)用語です。スタンドアロンの EXE です。私のプログラムと他のプログラムの間の「API」は、単にコントロールにデータを入力するだけです(テキストボックスなど)。

4

5 に答える 5

2

これに答えるのは少し汚い気がしますが、遅くてドライブのコピーが完了するのを待っているので....

チェックサムを使用して、実行可能ファイル/dll を特定できます。これにより、名前変更のトリックを回避できます。

起動時にプログラムのビットをランダムに変更することで、これを回避できます (たとえば、リソースを変更する、組み込みバージョンで遊ぶなど...)。

私が彼だったら、ネットワーク トラフィックのパターンも探し始めるでしょう。たとえば、顧客を競合他社に誘導している場合、その情報をどこかから調べているため、プラグインがブラックリストにあるサイトにアクセスした場合は、プロセスを強制終了するか、ライブラリをアンロードします。

いたちごっこゲームを十分に行うと (たとえば、実行可能ファイル/ライブラリが削除された場合に再作成するためのシェル フックなど)、ウイルス対策ソフトウェアによってウイルスとしてフラグが立てられる可能性があります。

于 2009-06-19T02:09:28.187 に答える
2

あなたの競争相手のスポーツではありません。

プロジェクトを未コンパイルの暗号化されたソース コードとしてデプロイします。特定の署名の検出を回避するために、ランダム化、クラスの名前変更、コードの再配置が可能な復号化および展開プログラムを作成します。

次に、CSharpCodeProvider を使用してクライアント マシンでコードをコンパイルし、コードをコンパイルします。完全にランダムな関数シグネチャを使用して、ランダムなアセンブリを生成できます (完全にランダムにするのではなく、実際の一般的な単語の大規模な辞書を使用することをお勧めします。それらを連結して、より楽しくすることができます。たとえば、Live、Virtual、Space、Office、Network、 Utility. Space.Live.Network.dll、Utility.Virtual.Live.dll )。

すべてのクライアントのプログラムのすべてのバージョンは異なります。展開プログラムをクロークしてください。カスタマイズされたバージョンをインストールした後、それ自体を削除する必要があるかもしれません。

于 2009-06-19T02:34:35.780 に答える
0

これはあなたの最後の質問に対する答えではなく、説明されている問題に対する答えです。

他のアプリケーションを修正してみませんか。タイトルで探している文字列を見つけて、その中の文字を変更します。

自分のアプリケーションではなく他のアプリケーションの修正を顧客に提供して、問題がどこにあるかを顧客に知らせます。

于 2010-04-09T22:08:28.670 に答える
0

とにかく、私の質問はこれです: 私のプログラムが実行されているかどうかを検出するために、彼は他に何ができますか?

  • プログラムは EXE ですか、それとも DLL ですか?
  • あなたはそれをプラグインと呼んでいます: 何にプラグインしているのでしょうか?
  • あなたのプログラムはどのように開始/起動/実行されていますか?
  • プログラムは「プラグイン」するために何をしますか?
  • あなたのプログラムと他のプログラムの間の API は何ですか?
于 2009-06-19T02:20:27.243 に答える
-1

@ryeguy ...最高の防御は、私見の良い攻撃です。あなたのプロセスを無効にする前に、彼のプロセスを無効にするためにできることをしてください。

于 2009-06-19T02:29:12.530 に答える