ソフトウェアやハードウェアなどの製品を入手し、解析や分解などによって動作原理や製造方法などを明らかにすることです。
ソフトウェアの場合には、実行可能ファイルを逆アセンブルや逆コンパイルの手法によって解析してソースコードを入手して行います。スクリプト言語のように、最初からソースコードが入手できる場合もありますが、リバースエンジニアリングをしづらくするために、難読化されているケースもあります。
リバースエンジニアリングそのものは違法行為ではありませんが、それによって入手した情報をそのまま自身の製品開発に取り入れるなどすると、著作権や不正競争防止法などに抵触する恐れがあります。自社製品開発の参考として、他社製品を解析するような場合に、意図せず違法行為になってしまわないよう、リバースエンジニアリングを行うチームと、実装を行うチームを分けるクリーンルーム手法を採用することがあります(解析した結果を直接的に実装に使わないように配慮する)。
リバースエンジニアリングをおこなう目的としてほかにも、自社の特許技術を勝手に使用していないか調べる、ソースコードが失われてしまった過去のソフトウェアについて調べる、既存製品と連携する製品を開発するためにインターフェースやデータフォーマットを解析する、セキュリティ上の問題(脆弱性)の有無を調べる、ウイルス対策ソフトの開発のためにコンピュータウイルスを解析するといったものがあります。
なお、リバースエンジニアリングを禁止する条項を EULA(エンドユーザー使用許諾契約)に含めることが多く、それを無視して行えば、契約内容に違反していることになるので注意が必要です。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |