web-dev-qa-db-ja.com

バイナリ開発とリバースエンジニアリングの違いは?

私はリバースエンジニアリングの初心者で、できる限りのCTFに参加してCrackMeを解くことでスキルを向上させようとしています。バイナリ開発とリバースエンジニアリングが常に2つの異なるトピックとして分離される理由を見つけようとしています。

私の質問は簡単です:

リバーシングはバイナリエクスプロイトとは異なりますか?

5
bi0s.kidd0

むしろ、これらの用語の定義を引用して、これらのことについて私の個人的な見解を述べたいと思います。

リバースエンジニアリングは、出力を受け取り、入力が何であるかを理解するプロセスです。また、情報が入力されてから出力されるまでの情報の追跡も意味します。これは、ソースがなくてもマシンのすぐ上にある抽象化のレベルがなくても機能することを理解していると考えてください。ソフトウェアに関して言えば、リバースエンジニアリングは、アプリケーションの実行中に、アプリケーションで実行中のコードをデバッグするプロセスである傾向があります。それが実行されるのを見て、それが取るプロセスに従って、ステップを追跡し、自分自身を自分が使用できる意味のあるものに再組み立てすることができます。

バイナリの悪用は、ソフトウェアの微妙な(またはおそらくそれほど微妙ではない)欠陥を悪用して、アプリケーションが実行するように設計されていない機能をアプリケーションに実行させるプロセスです。バイナリの欠陥を悪用することは不可能ではありませんなしリバースエンジニアリングを行うことですが、ほとんどすべてのバイナリの悪用演習は、アプリケーションの動作を理解し、欠陥を特定するためのリバースエンジニアリングから始まると主張します。

6
OJ.