リバースエンジニアリングを行うのは下記のような目的が考えられます。
- 類似の製品を作るために
- セキュリティのチェックのために
- 製品を別用途で使うために
一番目は違法となるケースだと思います。
二番目が結構流行ってるようです。
私は三番目です。IOのアドレスや挙動を調べたりします。
ターゲットは8bitの8051だったり32bitのMIPSだったりします。
昔の製品はROMだったりOTPが使われていて、再利用が難しかったのですが、最近の製品ではFlashが使われることが多く、何度も作り直すことが出来ます。
最近のFlashは1万回以上の書き込みが出来ます。
メーカーでのSOCの開発はFPGAでプロトタイプを作り、ASICで製品にしたりします。FPGAに入れるIOはIPとよばれて、自社開発のものもあるでしょうし、売り物の場合もあります。
GPLなコードがあればそれを見ます。
データーシートが手に入るものもあります。
これらがない場合は最終手段でバイナリを逆アセンブルしてリバースエンジニアリングします。
動かして、JTAGでレジスタを覗いたりすることもあります。
ルーターからルーターの機能をとっぱらってIOTのモジュールにしたりしています。
脆弱性が報告されたルーターでもルーターの機能を消しているので、脆弱性はありません。
ターゲットはHardOffで500円以下で購入できるようなものです。