パスワードロックされたExcel VBAのソースコードを見る
背景
はるか昔、人々はExcel VBAを使って今では考えられないほど大規模なツールを構築していました。
現代のとある企業で、そのようなレガシーツールを現代的なWebシステムとして再構築することになり、まずは現行ツールが何をしているか紐解く必要がありました。
そのxlsファイルは今でもたくさんの人が使っているものでしたが、VBAプロジェクトが保護されており、ソースコードを見るためにはパスワードが必要でした。
しかし、パスワードの伝承はすでに途絶えて久しく、保護を解除することができる人はいませんでした。
そこで人々はパスワードを破るすべを探し求め、ついにはソースコードを見ることに成功しました。
※この記事はパスワードを破ることを推奨するものではありません。この記事に記載されている方法はそれ以外に方法がない場合にExcelツールの権利保有者の許可を得た上で試してください。
調査
とりあえずググってみたところ、VBAプロジェクトのロックを一時的に解除するVBAスクリプトが広く知られているようでした。
しかし、試してみたところロック解除できた旨のメッセージが表示されるのにVBAプロジェクトを選択したらExcelが落ちる。。
恐らくこの方法はExcel2007以降のファイル(xlsx)用なのだろうと推測し、他の方法を探しました。
すると出てきたのがこれ。 stackoverflow.com
なんか一番人気の回答にxlsでもスクリプトで解除できる的なことが書いてあるけど、一度試してできなかったので無視。
この回答を参考にしました。
Is there a way to crack the password on an Excel VBA Project? - Stack Overflow
結局どうすればいいの?
A: バイナリエディタでパスワードを書き換えます。
詳しくは上記のサイトを見れば分かりますが、ざっと以下のような手順です。