LinkStationには、LEDや電源コントロール用にAtmel社のワンチップマイコンが搭載されています。BUFFALO LinkStation をハックしようの山下さんがこのAVRマイコンがどのような処理をしているか解析していらっしゃいますが、やはり外から見える部分だけではすべてを解析するのは困難のようです。そこで、このマイコンに内蔵のフラッシュROMからプログラムを吸い出して中から解析してみようと考えました。しかし、AVRマイコンには、内部のプログラムの読み出しを禁止する「ロックビット」というフラグが用意されており、このビットが「0」になっていると、読み出しはできません。
写真左側のカラフルな基板が、私が所持しているAtmel純正のAVRマイコン用プログラマーです。双方のpin配置を調べてみたところ、6pinヘッダで直結できることがわかりました。ただし、プログラマーの設定が、「ターゲットに電源を供給する」設定になっていると、プログラマーから5Vが供給されてしまい、LinkStationの3.3V系へ5Vが流れ込んでおそらくLinkStationが壊れてしまいます。以前同じような失敗をしてターゲットのICを破損させてしまった経験から、今回は事故を未然に防ぐことができました。
あとは双方の電源を投入し、(LinkStationは、電源を投入しなくても、コンセントをさすだけでAVRには3.3Vが供給されています)Windows上のプログラマー用ソフトウェア「AVRStudio」で、「Read」ボタンを押すだけです。結果はすんなりとプログラムコードの吸い出しに成功しました!!あとは、吸い出したコードをハンド逆アセンブルするだけですが…、、、何か問題になると困りますので、吸い出したコードの公開はやめておきます。。
AVRフラッシュ吸い出し