3

重複の可能性:
C ++ Builder exeを逆コンパイルすることは可能ですか?C ++ Builder exeは安全ですか?

プログラムの作成には、Microsoft Visual C ++2010Expressを使用しています。プログラムを配布したい場合は、「リリース」構成でコンパイルし、デバッグ情報を追加しないようにリンカーを設定します。だから私の質問は、私の実行可能ファイルは安全ですか、それとも誰でも逆コンパイルしてソースコードを見ることができますか?安全でない場合、どうすれば逆コンパイルされないようにできますか?

4

4 に答える 4

9

すべてのプログラムはある程度逆コンパイルできます。ただし、ソースコード内の有用な情報の大部分は、コンパイル中に削除されます。デコンパイラーが生成するソースコードは、オリジナルの淡い模倣です。

変数名、関数名、クラス名などは、逆コンパイル後は使用できなくなります。したがって、逆コンパイラーが実行できる最善の方法は、次のように関数を回転させることです。

double CalculateWidgetStrength(int WidgetType, int WidgetFrobishness);

このようなかなり無意味なコードに:

double Function85(int p1, int p2);

そして、それを非常に正確に行うことに成功したとしても、逆コンパイラーにとっては非常に困難な場合があります。

于 2013-01-01T20:22:57.013 に答える
2

誰かがそれを逆コンパイルして元のソースコードを見ることができますか?可能性は低いですが、元のソースコードはそれほど重要ではありません。例えば:

int x = 1 - 1;

int x = 0;

バイナリでは同等になりますが、それは実際には問題ではありませんか?

十分に大きなプロジェクトの場合、生成されたコードを実際に利用できないため、逆コンパイルは実際には問題になりません。知識の伝達、文書化、適切な命名の恩恵を考慮に入れると、大規模なプロジェクトのごく一部でも知るには何年もかかります。逆コンパイラだけでは不可能だと思います。

特定の機能については、はい、リスクがあると思いますが、完全に実行できないものは、100%削除されます。

于 2013-01-01T20:24:55.910 に答える
2

コードを完全に保護することはできません。

私見では、コードの保護に費やす時間は、製品の機能をリッチでエラーのないものにすることに費やしてから、頻繁にリリースするほうがよいでしょう。何らかの方法でコードを難読化すると、修正が非常に困難になるバグを見つけるのが困難になる可能性があります。

于 2013-01-01T20:35:46.217 に答える
1

暗示する方法でそれを「安全」に保つ唯一の方法は、それをデプロイしないことです。つまり、Webサービスなどを実行します。あなたは彼らがそれを実行することを不可能にすることなしにそれを実行する人々からそれを安全にすることはできません。

あなたがすでに逆コンパイルを行ったことを考えると、かなりの労力が必要になるでしょう、私の質問はそうでしょう。単に「自分で転がす」よりも多くの労力が必要になる可能性があるので、なぜ誰かが気にするのでしょうか。

于 2013-01-01T20:32:39.640 に答える