2011-12-30 6 views
8

アプリケーションが特定のプロセスを操作しようとしているかどうかを確認しようとしています。私はこれを達成するための適切なアプローチを見つけることができませんでした。実行中のプロセスに対するチェックサムの計算は可能ですか?それはどうすればこの状況を検出することができますか?プロセスへのメモリアクセスを検出しています

+0

問題のアプリを知っていますか?そして、あなたはあなたのアプリの操作がどのようにして検出されるのか知っていますか? – rene

+0

ご不便をおかけして申し訳ありません。私は操作の検出方法を知らないので、操作の発生を検出することはできません。だから私は助けを求めた。 –

+0

達成しようとしている実際の目標は何ですか?自分のアプリケーションで改ざんを検出/検出しようとすると、100%動作するものはありません。 –

答えて

4

他のプロセスでは、メモリを変更することはできませんが、メモリを変更することができますが、このコードはあなたのアドレス空間になければなりません。実行時にDLLをプロセスに注入することができます。あなたのプロセスにDLLをリストし、ReadProcessMemoryWriteProcessMemoryOpenProcessCallNextHookExの関数呼び出しをコード内で検索することで、これを簡単にチェックすることができます。これを行うには、関数のアドレス(GetProcAddress)とコード内の検索値を取得します(狭い範囲の結果については、いくつかのasm call予測を追加できます)。

あなたは起動時にDLLインジェクションが発生し、ファイルからメモリにコピーされた後、あなたのPEファイルが最後のDLLライブラリの後、壊れてしなければならない時に、ディスク内およびメモリであなたのPEファイルに問題があるかどうか確認することができます追加のdllインポートでデバッグシンボルを上書きする必要があります。この変更はメモリ内と同じファイルで行うことができます。

最良の方法ですが、おそらくC#言語を使用しているときには簡単ではありませんコードを難読化します。 あなたはどのような作業をしなければならないか分からず、どのように作業するのか分かりません。が良い方法です。しかし、良い難読化されたC#コードでは、そのための良いソフトウェアを見つけなければならず、おそらく低価格ではありません。

+0

@gcx:ReadProcessMemory、WriteProcessMemoryも実行時の注入をキャッチします。実行時注入は他のプロセス注入関数から実行され、ロードライブラリコードで実行されます(ターゲットメモリ内でフックメモリがdllにある関数を呼び出す) – Svisstack

+0

難読化を述べたことがあります。私は、あなたが私の "私のプロセス"の参照のためにそれを言ったと思います。私は自分のプロセスを言って特定のプロセスを参照しました。元の投稿を編集しました。混乱させて申し訳ありません。 –

+1

ここで私が知っている最高の無料の難読化器があります:[Eazfuscator.NET](http://www.foss.kharkov.ua/g1/projects/eazfuscator/dotnet/Default.aspx) – ken2k

関連する問題