ITパスポート 2020年 秋期 問51
問題文
リバースエンジニアリングで実施する作業として、最も適切なものはどれか。
選択肢
ア:開発中のソフトウェアに対する変更要求などに柔軟に対応するために、短い期間の開発を繰り返す。
イ:試作品のソフトウェアを作成して、利用者による評価をフィードバックして開発する。
ウ:ソフトウェア開発において、上流から下流までを順番に実施する。
エ:プログラムを解析することで、ソフトウェアの仕様を調査して設計情報を抽出する。(正解)
🔒 解説は解答すると表示されます
リバースエンジニアリングで実施する作業【ITパスポート 解説】
正解の理由
選択肢の中でリバースエンジニアリング(英: reverse engineering:既存の製品やプログラムを解析して設計や仕様を復元・明らかにする作業)を直接表しているのは、エの「プログラムを解析することで、ソフトウェアの仕様を調査して設計情報を抽出する」です。
リバースエンジニアリングは「あるものがどのように作られているかを調べる」作業であり、プログラム(時にはバイナリ=実行ファイルから)を読み解いて仕様や設計を取り出す点がまさに一致します。したがって、エが最も適切です。
リバースエンジニアリングは「あるものがどのように作られているかを調べる」作業であり、プログラム(時にはバイナリ=実行ファイルから)を読み解いて仕様や設計を取り出す点がまさに一致します。したがって、エが最も適切です。
解法ステップ
- 問題文のキーワードを探す:「リバースエンジニアリング」「実施する作業」。
- 各選択肢の内容とキーワードを照らし合わせる。
- 「プログラムを解析」「仕様を調査」「設計情報を抽出」→ 既存のものを解析して情報を得る=リバースエンジニアリング。
- 残りの選択肢が別の開発手法や概念を説明しているか確認して除外する。
- 一致したものを答えとする(ここではエ)。
選択肢別の誤答解説
- ア: 「短い期間の開発を繰り返す」はアジャイル開発(Agile:変化に柔軟に対応する反復的な開発手法)を指します。リバースエンジニアリングの説明ではありません。
- イ: 「試作品を作成して利用者評価をフィードバックして開発する」はプロトタイピング(prototyping:試作品で検証する手法)を説明しています。これもリバースエンジニアリングとは別物です。
- ウ: 「上流から下流までを順番に実施する」はウォーターフォール開発(順次工程を進める伝統的な手法)に当たります。リバースエンジニアリングの定義ではありません。
- エ: 「プログラムを解析して仕様や設計情報を抽出する」は、まさにリバースエンジニアリングの本来の作業内容です(正解に該当)。
よくある誤解
- リバースエンジニアリングは「必ず違法」という誤解
- 国や状況によって扱いが異なります。インタオペラビリティ(互換性)確保やセキュリティ調査など、合法的に行われる場合もあります。実施前に法的な確認が必要です。
- リバースエンジニアリング=デバッグや単なるバグ修正ではない
- デバッグは動作の問題を直すことが目的です。リバースは「設計や仕様を復元」する点が目的で、目的が異なります。
- ソースコードがなければできない、という誤解
- バイナリ(実行ファイル)から解析して仕様を得ることが多く、ソースがない場合に行うことが多いです。
補足コラム
- 実際の利用例:
- レガシーシステムの仕様が文書化されていない場合、運用や移行のために仕様を復元する。
- マルウェア解析(悪意あるソフトの挙動解析)やセキュリティ診断。
- 他システムとの互換性を作るためにプロトコルを解析する場合。
- ツール例(専門用語): ディスアセンブラ(逆アセンブルして機械語を人が読める形に変換するツール)、デバッガ(プログラムを実行しながら挙動を観察するツール)。これらは解析作業を支援します。
- 注意点:著作権や契約で解析禁止されているケースがあります。業務で行う際は法務に確認してください。
FAQ
Q1: リバースエンジニアリングはどんなスキルが必要ですか?
A1: プログラムの構造(アーキテクチャ)、低レベルの動作(バイナリやメモリ)、デバッグ技術、そしてドメイン知識(対象ソフトの業務知識)が役立ちます。
A1: プログラムの構造(アーキテクチャ)、低レベルの動作(バイナリやメモリ)、デバッグ技術、そしてドメイン知識(対象ソフトの業務知識)が役立ちます。
Q2: ソースコードがある場合でもリバースエンジニアリングは使いますか?
A2: ソースがあれば通常はリバースは不要ですが、ドキュメントが不十分で設計を把握したい場合などには行われることがあります。
A2: ソースがあれば通常はリバースは不要ですが、ドキュメントが不十分で設計を把握したい場合などには行われることがあります。
Q3: 試験で「解析」「設計情報を抽出」などの文言が出たらどう判断する?
A3: その語句はリバースエンジニアリングの定義に合致します。まずそれを疑って選択肢を確認しましょう。
A3: その語句はリバースエンジニアリングの定義に合致します。まずそれを疑って選択肢を確認しましょう。
関連キーワード: リバースエンジニアリング、逆解析、プロトタイピング、アジャイル開発、ウォーターフォール開発、マルウェア解析、ディスアセンブラ

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

