c# 逆コンパイルの危険性
最近リバースエンジニアリングという言葉を初めて聞いたYossyです。そうです、情弱です。情弱の自分が調べた内容を備忘録として残しておきます。
c#で作成されたexeやdllは逆コンパイルされる恐れがあるとのことです。逆コンパイルとは、exeやdllからソースコードの中身を再作成することです。リバースエンジニアリングとも言われています。逆コンパイルによりソースコードを再作成されると何が怖いのかといわれると下記の点があげられます。
危険性として挙げられるもの
・知的財産権の漏洩
ソースコードが、意図しない形で公開され、アルゴリズムやロジックを閲覧され、不正に利用される可能性があります。
・セキュリティの情弱性の暴露
逆コンパイルにより、ソフトウェアの実装内容がしられると、悪意のある攻撃者がセキュリティの脆弱性を特定し、不正に利用される可能性があります。
・ライセンス違反
ソフトウェアの実装内容が知られると、ライセンス違反を実行することが可能になります。ユーザー認証機能をソフトに組み込んでいても、その処理を回避するような仕組みに改ざんしたりすることで、不正に利用されてしまいます。
・逆技術革新
競合他社にリバースエンジニアリングを行われると、競業製品を迅速に開発される可能性があります。パクリみたいな感じです。
逆コンパイルソフト
逆コンパイルなんて、ハッカーレベルじゃないとできないのではと、情弱の自分は思っていました。しかし、そんなことはなくフリーソフトでだれでも簡単に行えてしまいます。フリーソフトの一例をあげるとDnSpyというアプリです。これは、Githubで公開されており誰でもダウンロード可能です。このアプリ、調べたところ4年前にはすでに公開されていました。dnSpyの詳しい使いかたは、他の人のHPを参考にしてください。exeやdllをWindowの左側にドラッグ&ドロップするだけで、あら不思議、ソースコードの中身が復元されています。しかも、変数名とかも可読性が高くなるように一般的な名前に変更もされていました。
これを使えば、保護されていない.net 言語で作られたソフトなら中身を確認できます。