プログラムがコンパイルされてビルドされてから変更されているかどうかを知るための方法はありますか? ビルド後に.exeが変更されないようにしたいと思います。あなたが知っている変更された.exe(ビルド)を検出します
答えて
秘密鍵を使用してEXEに署名し、公開鍵を使用してその署名をチェックすることができます。私は約20年の間にEXEファイル形式で作業していませんが、このような署名を保存できるスペースがあります。もちろん、チェックしているファイルの部分は、署名そのものを除外する必要があります。
しかし、あなたがEXEをクラックさせないようにしようとするなら、あなたは幸運です。クラッカーは署名を検証するコードに単純にパッチを当てます。
マイクロソフトはhttp://msdn.microsoft.com/en-us/library/8s9b9yaz%でコード署名ツールを持っている28VS.80%29.aspxこれは助けになるかもしれません。 – Adriaan
プログラムは、プログラムをビルドしてから変更されているかどうかを知ることはできますか?
はい。残りのプログラムのチェックサムは、分離されたリソース文字列に格納することができます。
プログラムが作成されてから悪意を持って変更されたかどうかをプログラムが知ることは可能ですか?
いいえチェックサム、またはそれを実行して比較する機能さえも変更できます。
あなたはTamper Aware and Self Healing Codeについて話していますか?
記事は ハードウェア障害や不正 パッチを検出する実証します。実行可能ファイルにパッチを適用して を埋め込み、予想されるハッシュ値 .textセクションを埋め込みます。 許可されていないバイナリパッチャなどの悪意のあるコードの影響を修復するプロセスを示しています( )。この記事で紹介されている のアイデアは、実行可能ファイル がディスク上かメモリ内にパッチされているかどうかを問わず、同じように動作します。 ただし、自己修復はメモリ で発生します。
ほとんどの一般的なコンパイラには、PEヘッダーの「チェックサム」フィールドを入力するスイッチがあります。また、空白のままにして独自のカスタム値を指定することもできます。とにかく、これはそのようなデータを保存するための「標準的な」場所です。
残念ながら、バイナリを改ざんするのを止める本当の方法はありません。これは、exe自体の内部にチェックを入れて検出する必要があります。その時点で、パッチを適用することができます。
この問題の解決策の1つは、特定の機能を暗号化し、既知のデータのチェックサムをキー(たとえば、別の機能のチェックサム)として使用することです。次に、関数を残すと、その関数を再暗号化します。明らかに、これを処理するためにあなた自身のプロローグ/エピローグコードを用意する必要があります。あなたのプログラムが多量にマルチスレッド化されている場合、これは本当に適切ではありませんが、シングルスレッドであるか軽度にしかスレッド化されていない(関数へのアクセスを制御し、すべてのエントリポイントを制御することができます)意志。
これは、単に.text/.data /を暗号化するほとんどの「パッカー」の上のステップです。rdata/etcセクションを開き、すべてを実行時に解読します。これらは非常に簡単に「ダンプする」ことができます。プログラムを実行し、スレッドをすべて停止してからメモリにファイルをダンプするだけです。この攻撃は、例えば最も攻撃的なパッカーの1人であるテミダに対して作用する。そこから、IATを再構築し、いくつかの再配置などを修正する必要があります。
もちろん、攻撃者はデバッガを使用して暗号化されていないコードをダンプしてexeをアンパックすることは可能です明らかに何も絶対確実ではありません。
- 1. Windowsフォーム:フォーカスされたコントロールの変更を検出します。
- 2. ABAddressBookRegisterExternalChangeCallbackから変更されたものを検出します。
- 3. 検出長さが変更されました
- 4. 変更イベントで 'Enter'キーが押されたことを検出しました
- 5. CruiseControl:変更が検出されましたが、ワーキングコピーのタイムスタンプは変更されていません
- 6. Eclipse Egitで変更されたファイルが検出されない
- 7. ビルド/最小化JSファイルが変更されました
- 8. ウェブページが変更されたかどうかを検出します
- 9. CMakeはどのように変更されたファイルを検出しますか
- 10. GWT。 TextBoxのテキストが変更されたときを検出します。
- 11. iFrame内のURLが変更されたかどうかを検出します
- 12. 何かが変更されたかどうかを検出します
- 13. WCF:サービス契約が変更されたときを検出します。
- 14. システムクロックが変更されたかどうかを検出しますか?
- 15. 変更されたウェブページを検出する方法は?
- 16. NSColorWellの変更された選択を検出する
- 17. jQueryの変更されたオプションを検出するjQuery
- 18. Gnomeで変更されたワークスペースを検出する
- 19. uiModeまたはKeyboardの変更を検出しました。
- 20. DIVの高さが変更された場合の検出
- 21. IntelliJ IDEAにプロジェクトをリフレッシュし、変更されたファイルを検出させる
- 22. DbContextは変更されたプロパティのみを検証します
- 23. GUIの変更(デザインモードが適用されます)が、EXEをビルドすると変更が適用されません
- 24. 変更されたメモリデータをどのように検出できますか?
- 25. QT:ビルドされた実行可能ファイルの名前を変更します。
- 26. vclスタイルが変更されたときの検出方法は?
- 27. ディクショナリに含まれる値が変更されたかどうかの検出
- 28. レジストリの変更を検出しました
- 29. 無線の変更を検出しました
- 30. 変更が組み込まれたXcodeアプリケーションをビルドしない
誰が検出を行うのですか?実行可能ファイル自体または外部プロセス?後者の場合は、変更されていない実行可能ファイルに対してMD5チェックサムなどを提供することができます。 –
MikeD、あなたはあなたの意図を詳述できますか?それは改ざんやビルドプロセスの一部を防ぐことですか?あなたはビルドプロセスへのアクセス権を持つ誰もが「信用できますか? – Adriaan