基本情報技術者 2017年 秋期 午前(科目A) 問50
問題文
ソフトウェアのリバースエンジニアリングの説明はどれか。
選択肢
ア:開発支援ツールなどを用いて、設計情報からソースコードを自動生成する。
イ:外部から見たときの振る舞いを変えずに、ソフトウェアの内部構造を変える。
ウ:既存のソフトウェアを解析し、その仕様や構造を明らかにする。(正解)
エ:既存のソフトウェアを分析し理解した上で、ソフトウェア全体を新しく構築し直す。
##: ソフトウェアのリバースエンジニアリングの説明はどれか。【午前2 解説】
要点まとめ
- 結論→リバースエンジニアリングは既存のソフトウェアを解析して、その仕様や内部構造を明らかにする技術的活動です。
- 根拠→ソースコードやバイナリ、実行時の振る舞いを解析し設計意図やデータ構造を復元する点が特徴です。
- 差がつくポイント→自動生成やリファクタリング、再構築とは目的が異なり「解析・理解」が主目的である点を押さえてください。
正解の理由
正解は ウ です。リバースエンジニアリングは既存のソフトウェアを解析して、その仕様や構造、設計意図を明らかにする行為を指します。実行ファイルの逆アセンブルやデコンパイル、プロトコル解析、動的解析などを通じてソフトの内部を理解することが目的であり、選択肢ウの記述と一致します。
よくある誤解
- 解析の目的を「修正や再構築」と混同する誤解:リバースエンジニアリング自体は理解・解析が目的で、再設計や再構築は別の工程(リバース・リインジニアリングやリライト)です。
- 自動コード生成や単なるリファクタリングと同じと考える誤解:コード自動生成(設計→コード)やリファクタリング(内部改善)は前向き開発であり、リバースエンジニアリングとは逆の流れです。
解法ステップ
- 問題文のキーワード「解析」「仕様や構造を明らかにする」を確認する。
- 各選択肢が「解析・理解」「生成・変換」「再構築」のどれに該当するか分類する。
- 「解析・理解」に該当する選択肢が正解であるため、それと一致するものを選ぶ(ウ)。
選択肢別の誤答解説
- ア: 開発支援ツールなどを用いて、設計情報からソースコードを自動生成する。
- 説明:これは逆ではなく前工程(設計→実装)を自動化する行為で、コード生成に該当します。リバースエンジニアリングではありません。
- イ: 外部から見たときの振る舞いを変えずに、ソフトウェアの内部構造を変える。
- 説明:これはリファクタリングやリライト、あるいは動作を変えないリプレース(置換)に近く、目的が内部改善であり解析が主目的ではありません。
- ウ: 既存のソフトウェアを解析し、その仕様や構造を明らかにする。
- 説明:正解。解析によって仕様・設計を抽出・理解する行為であり、リバースエンジニアリングの定義に合致します。
- エ: 既存のソフトウェアを分析し理解した上で、ソフトウェア全体を新しく構築し直す。
- 説明:これはリエンジニアリングやリライト(再構築)に相当します。解析を含む場合もありますが、目的が「新しく構築する」点でリバースエンジニアリングそのものではありません。
補足コラム
- リバースエンジニアリングは技術的手法の総称で、静的解析(逆アセンブル・デコンパイル)と動的解析(実行トレース・プロファイリング)に分けられます。
- 法的・倫理的配慮が必要です。著作権やライセンス、契約で禁止されている場合や、ソフトウェアの不正利用につながる解析は問題になります。
- 実務的な用途例:互換性確認、脆弱性調査、故障解析、レガシーシステムの仕様抽出など。単にコードを再生成する行為(自動生成)とは目的が異なります。
FAQ
Q1: リバースエンジニアリングとデコンパイルは同じですか?
A1: デコンパイルはリバースエンジニアリングの一手法で、バイナリからソース様式のコードを生成して理解を助けますが、解析全体はより広範です。
A1: デコンパイルはリバースエンジニアリングの一手法で、バイナリからソース様式のコードを生成して理解を助けますが、解析全体はより広範です。
Q2: リバースエンジニアリングは違法ですか?
A2: ケースバイケースです。許可された目的(相互運用性確保やセキュリティ調査など)は認められることがありますが、ライセンスや契約、各国の法令を確認する必要があります。
A2: ケースバイケースです。許可された目的(相互運用性確保やセキュリティ調査など)は認められることがありますが、ライセンスや契約、各国の法令を確認する必要があります。
Q3: 試験ではどう見分ければよいですか?
A3: 「解析・理解」を直接示す文言(仕様や構造を明らかにする)があればリバースエンジニアリング、生成や改善、再構築といった目的語があれば別の選択肢を疑ってください。
A3: 「解析・理解」を直接示す文言(仕様や構造を明らかにする)があればリバースエンジニアリング、生成や改善、再構築といった目的語があれば別の選択肢を疑ってください。
関連キーワード: リバースエンジニアリング、逆アセンブル、デコンパイル、静的解析、動的解析、リファクタリング、リエンジニアリング、互換性解析

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

