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

facebook x In

リバース(逆行)とエンジニアリングを組み合わせた言葉であり、ソフトウエア/ハードウエア製品の構造を分析し、動作やソースコード、製造方法や構成部品などの技術情報を調査し、明らかにすることを指す。一般的なソフトウエア/ハードウエア開発とは逆行した工程で進めるため、リバースエンジニアリングと呼ばれる。

リバースエンジニアリングにはさまざまなメリットがあるが、代表例として、(1) 開発期間の短縮・コストの削減、(2) 製品の図面/3Dモデル作成、が挙げられる。

  • (1) 開発期間の短縮・コストの削減
    通常の製品開発では、実験や解析を繰り返すことにより膨大な時間を費やすが、リバースエンジニアリングを行い、既存製品のソースコードや構造設計を参考にすることで、完成品に至るまでの製品開発で遠回りすることを回避し、開発にかかるコストと時間を圧縮することができる。また、開発期間を短縮しコストを削減することで、エンドユーザーに対しては、迅速で低価格な製品提供にもつながる。
  • (2) 製品の図面/3Dモデル作成
    特にハードウエア開発におけるメリットであるが、自社製品でも図面が古過ぎる場合や、製造元が古過ぎて製品図面が入手できない場合に、リバースエンジニアリングを行うことで実物の測定データから製品の3Dモデルを作成し、類似品を生産することができる。また、巧妙なデザインを伴う製品に関しては、職人がハンドメイドで作成した製品形状を測定することにより、通常設計では再現が困難な製品の量産につなげることも可能である。

近年では、ソフトウエアを対象にしたリバースエンジニアリングを阻害する対策が実施されることがある。具体的には、ソースコード中に製品仕様とは無関係なダミーコードを挿入することで解読を難解にさせる手法や、リバースエンジニアリング行為を検知し、制御フローを変更する「アンチデバッグ機能」が組み込まれるといった手法がある。
また、リバースエンジニアリングは合法か違法かの議論が度々交わされてきたが、合法であることが2019年の法改正により認められている。一方で、製品化する際に、知的財産権や特許権、意匠権などに関連する法律には抵触する可能性があるため、各法律との関係は把握しておく必要がある。

(村松 諒哉)