リバースエンジニアリングとは?

リバースエンジニアリングとは、日本語に直訳すると逆行工学で、機械を分解し設計図の状態に戻すことでその分析を行うことを指します。今回はソフトウェアのリバースエンジニアリングについて解説します。

ソフトウェアにおけるリバースエンジニアリングは、ソフトウェアをソースコードの状態にまで戻す行為を指すのが代表的です。リバースエンジニアリングをするとコンパイル(人間向きの言語で書かれたコードを機械でも理解できるような機械語に訳す作業)される前の状態になるので、そのソースコードを見れば、どこでどのような処理をした結果、どんな動作をしているのか、がわかってしまいます。これによってそのソフトの脆弱(ぜいじゃく)性が判明してしまえば、そこを悪意のあるクラッカーに狙われてしまうことになりかねません。また、ライセンスキーの処理がどのように行われているかを把握できれば、そこを迂回するような方法をとることでライセンスを持っていない人間であってもソフトを使用し続けることも考えられます。

リバースエンジニアリングは使用許諾契約により禁止

ただし一般的なソフトウェアには使用許諾契約に、リバースエンジニアリングに関しては禁止する項目が明記されていることがほとんどですので、悪意の有無に関わらずリバースエンジニアリングを行うと規約に触れる可能性もあります。中には、著作権上違法と扱われることもあります。

最後に

ただこのリバースエンジニアリング、悪意のある使われ方しかできないわけではありません。コンピュータウイルスのワクチンの作成には、このリバースエンジニアリングが使われています。そのソフトの脆弱性がわかる、ということは悪さをするコンピュータウイルスをリバースエンジニアリングすれば、そこをうまく利用したワクチンソフトが作れる、というわけです。また筆跡や文章の癖と同じように、ソースコードにもその人や組織特有の癖、というものがあります。ソースコードの状態に戻すことでその癖が判明、そこから開発元の特定が可能になることもあります。