2016-04-11 10 views
-2

.exeファイルを暗号化することはできますが、ユーザーはファイルの実行のみが許可されていますが、ファイルの読み取りや開けはできません。実行可能ファイルの暗号化

私はC/C++のexeファイルを逆コンパイルすることは困難ですが、追加のセキュリティのために、私はこれを実装したいことを知っています。

これが可能です。

あなたは私の要件についての詳細が必要な場合は私に知らせてください。

私はこれを実装するためにC言語を使いたいと思います。

+2

プログラムを実行するには、コンピュータがファイルを最初に復号化する必要があります。あなたのコンピュータがそれを解読できるなら、どんなユーザもそれを解読することができます。そして、「C/C++のexeファイルはすでに暗号化されていることを知っています」 - そうではありません。 – Amadan

+3

C/C++のexeファイルは暗号化されていません。 – Harry

+0

混乱して申し訳ありませんが、私は彼らが既にソースコードを入手するために逆コンパイルするのは難しい、判読不能な形になっていると言います。 - share75は今編集します。私が間違っていると私を訂正してください。 – share75

答えて

1

ありがとうございます。

コードを実行するためには、CPUは、プレーンテキストを参照する必要があります。したがって、バイナリにキーを提供する必要があります。コードセグメントを暗号化してパッキングするリモートで効果的な唯一の方法は、関数境界で暗号化と復号化を行い、関数入力時に解読が行われ、関数を出るときに再暗号化が行われる場合のみです。これは実行中のバイナリをダンプすることに対する小さな障壁を提供しますが、強い難読化と結合する必要があります。これは非常に一般的なテクニックであり、パック実行可能ファイルの標準スキームである "スタブ "暗号化方式。

あなたが情報を非表示にすると、情報が十分に加え、実行時に隠されていることが重要です。有能なリバースエンジニアが、実行中のプログラムの状態を調べます。したがって、ロード時に解読する静的変数を使用するか、ロード時に完全にアンパックされたパッキングを使用すると、迅速な検索が可能になります。ヒープに割り当てるものに注意してください。すべてのヒープ操作はAPI呼び出しを介して行われ、簡単にファイルに記録して推論することができます。スタック操作は、頻繁に頻繁に実行されるために追跡するのが一般的に困難です。動的分析は、静的解析と同じくらい重要です。あなたのプログラムの状態は常に何であり、どんな情報がどこにあるのかを意識する必要があります。

あなたの目標はあなたの実行可能ファイルを保護することであり、そのために、あなたのより多くの当面の目標は、リバースエンジニアが着実に精神的な足場を見つけるすることは事実上不可能であることを保証するべきであるように聞こえます。あなたが漏れる情報が少なく、環境の変化が大きければ、勉強するのが難しくなります。経験豊富なリバースエンジニアでなければ、リバースエンジニアリングを困難にすることはほとんど不可能です。