リバースエンジニアリング

読み:りばーすえんじにありんぐ / 英語表記:reverse engineering

完成したソフトウェアや機器を解析して、その仕様や設計、仕組みを明らかにすること。ソフトウェアの保守では、ソースプログラムを解析して、仕様書や設計書を作るのに使う。

イマシルちゃんの解説

おもちゃの車を分解して、「中はこうなってたのか!」って調べたことはあるかな?

ふつうは、設計図を書いてから物を作るけど、
すでにある物から、逆向きに設計図を作り出すこともできるんだ。
説明書がなくなっちゃった古いプログラムを直すときなんかに、とても役に立つんだよ。

より深い解説

定義

リバースエンジニアリングは、通常の開発(仕様 → 設計 → プログラム)とは逆の方向に、既存のプログラムや製品から、設計や仕様の情報を取り出す技術である。

ソフトウェアの保守での使われ方

長く使われているシステムでは、仕様書が残っていなかったり、プログラムと食い違っていたりすることが多い。そこで、ソースプログラムを解析して、次のような情報を取り出す。

関連する用語

用語内容
リバースエンジニアリングソースプログラムを解析して、仕様書や設計書を作る
フォワードエンジニアリング仕様や設計から、プログラムを作る(通常の開発の方向)
リエンジニアリングリバースエンジニアリングで得た仕様をもとに、改良したうえで、フォワードエンジニアリングで作り直す
リストラクチャリング機能を変えずに、プログラムを構造化されたものに変換する
リファクタリング外から見た動作を変えずに、プログラムの内部の構造を分かりやすく改善する
影響分析ソースプログラムを探索して、修正する箇所や影響の範囲を調べる

セキュリティでの使われ方

場面内容
マルウェアの解析実行ファイルを逆アセンブル、逆コンパイルして、動きや通信先を明らかにする
脆弱性の調査製品の動作を解析して、弱点を探す
互換性の確保公開されていない通信の形式などを解析して、相互に接続できるようにする

注意点

市販のソフトウェアの使用許諾契約で、リバースエンジニアリングが禁止されていることがある。また、解析して得た情報の使い方によっては、著作権や不正競争防止法などの問題になるおそれがある。

実際の試験ではここに出る!

この用語が出てくる記事

↑