7

リバース エンジニアリングから Exe ファイルを保護する方法は何ですか。exe ファイルをパックするために多くのパッカーが利用可能です。 -programexe-files-from.html

この方法は効率的ですか?

4

4 に答える 4

18

プログラムがリバース エンジニアリング (「理解」) されるのを防ぐ唯一の良い方法は、その構造を修正して、基本的に反対者にチューリング マシンの理解を強制することです。基本的にあなたがすることは次のとおりです。

  • 一般的に計算が難しいことが証明されている問題を考えてみましょう
  • 結果がわかっているバージョンを合成します。これは通常、バージョンを解決するのに比べてかなり簡単です
  • 正解に応じて正しいプログラムを実行する
  • 答えが正しくない場合、プログラムに意味のない計算をさせる

あなたのコードをじっと見つめている敵は、アルゴリズム的に難しい問題を解決することによって、「正しい」計算が何であるかを理解しなければなりません。40 年間、文献では誰も効率的に解決できなかった NP 困難な問題が山ほどあります。あなたのプログラムがこれらのいずれかに依存している場合、J. Random Reverse-Engineer が突然それらを解決することはできないでしょう。

一般に、元のプログラムを変換して、その制御フローやデータフローを覆い隠すことによってこれを行います。一部の技術は、一部の制御フローを本質的にデータ フローに変換し (「このポインター配列を介して間接的にジャンプする」)、制御フローをごちゃまぜにしてから、正確なポイントツー分析を必要とするデータ フロー アルゴリズムを実装します。練習。

これは、さまざまなテクニックについてかなり浅く説明しているが、読みやすい論文です: http://www.cs.sjsu.edu/faculty/stamp/students/kundu_deepti.pdf

これは、難読化変換が計算上困難であることが保証されている結果につながることを保証する方法に焦点を当てた別のものです: http://www.springerlink.com/content/41135jkqxv9l3xme/

これは、セキュリティに関する保証のレベルを提供するものを含む、さまざまな制御フロー変換方法を調査するものです: http://www.springerlink.com/content/g157gxr14m149l13/

この論文では、オーバーヘッドの少ないバイナリ プログラムの制御フローを難読化しています

現在、プログラムが逆コンパイルされるのを防ぐために、多くのトラブルが発生する可能性があります。しかし、逆コンパイルされたものを理解することが不可能な場合は、単に気にしないかもしれません。それが私がとるアプローチです。

逆コンパイルの防止を主張する場合は、逆コンパイルの目的を検討することで攻撃できます。逆コンパイルは、基本的に、ターゲット プログラムの各バイトを何らかのコードに変換できることを提案します。これを失敗させる 1 つの方法は、実際にはそうしない場合でも、アプリケーションが各バイトをコンピューター命令とデータの両方として明らかに使用できるようにすることです。メソッド。これの 1 つのバリエーションは、実際には無条件である (制御フローの難読化メソッドを使用して) コードに多くの条件付き分岐を含めることです。分岐の反対側は、有効に見えるが既存のコードのクレイジーな場所に分岐する無意味なコードに陥ります。このアイデアのもう 1 つの変形は、難読化されたインタープリターとしてプログラムを実装することです。解釈されたデータのセットとして実際の機能を実装します。これを失敗させる楽しい方法は、実行時にコードを生成し、その場で実行することです。C などの従来の言語のほとんどは、これを表現する方法がほとんどありません。

このように作成されたプログラムは、逆コンパイルするのが難しく、ましてや事後に理解することはできません。

バイナリ コードの保護に優れていると主張されているツールは、 https ://security.stackexchange.com/questions/1069/any-comprehensive-solutions-for-binary-code-protection-and-anti-reverse- にリストされています。エンジニアリング

于 2011-07-31T09:42:23.707 に答える
5

パッキング、圧縮、およびその他のバイナリ保護の方法は、コードの反転を妨げたり遅くしたりするのに役立つだけであり、100%安全なソリューションになることはありません(一部のマーケティングでは信じられますが)。基本的に、どのようなレベルのハッカーに対抗しているかを評価する必要があります。彼らがスクリプトキッズの場合は、実際の努力とスキルを必要とするパッカーです。(つまり、スクリプト/プログラム/チュートリアルの解凍が不足しているもの)はそれらを阻止します。スキルとリソースを持っている人と向き合う場合は、コードを安全に保つことを忘れることができます(多くのコメントが言うように、OSがコードを読み取って実行できる場合は、もう少し時間がかかります)。あなたの懸念があなたのIPではなく、あなたのプログラムが行う何かのセキュリティであるなら、あなたはそれが元のソースでさえ攻撃できない方法で再設計するほうがよいかもしれません(chromeはこのアプローチを取ります)。

于 2011-07-31T06:28:53.367 に答える
1

逆コンパイルは常に可能です。ステートメント

この脅威は、実行可能ファイル (.exe) を圧縮/圧縮することで排除できます。

あなたのリンクされたサイトにあるのは明白な嘘です。

于 2011-07-31T04:24:07.420 に答える
1

現在、多くのソリューションを使用して、アプリケーションをアンチコンパイルから保護できます。圧縮、難読化、コード スニペットなど。これを実現するのに役立つ会社を探すことができます。

Nelpeiron などの Web サイトはhttps://www.nalpeiron.com/ で、Windows、Linux、ARM-Linux、Android の多くのプラットフォームをカバーできます。

さらに、 Virboxも考慮に入れることができます: Web サイトは次のとおりです: https://lm-global.virbox.com/index.html、メモリチェック。

于 2020-11-05T08:31:30.403 に答える