パスワードロックされたExcel VBAのソースコードを見る

背景

はるか昔、人々はExcel VBAを使って今では考えられないほど大規模なツールを構築していました。
現代のとある企業で、そのようなレガシーツールを現代的なWebシステムとして再構築することになり、まずは現行ツールが何をしているか紐解く必要がありました。
そのxlsファイルは今でもたくさんの人が使っているものでしたが、VBAプロジェクトが保護されており、ソースコードを見るためにはパスワードが必要でした。
しかし、パスワードの伝承はすでに途絶えて久しく、保護を解除することができる人はいませんでした。
そこで人々はパスワードを破るすべを探し求め、ついにはソースコードを見ることに成功しました。
※この記事はパスワードを破ることを推奨するものではありません。この記事に記載されている方法はそれ以外に方法がない場合にExcelツールの権利保有者の許可を得た上で試してください。

調査

とりあえずググってみたところ、VBAプロジェクトのロックを一時的に解除するVBAスクリプトが広く知られているようでした。

puu-0328.hatenablog.com

しかし、試してみたところロック解除できた旨のメッセージが表示されるのにVBAプロジェクトを選択したらExcelが落ちる。。
恐らくこの方法はExcel2007以降のファイル(xlsx)用なのだろうと推測し、他の方法を探しました。

すると出てきたのがこれ。 stackoverflow.com

なんか一番人気の回答にxlsでもスクリプトで解除できる的なことが書いてあるけど、一度試してできなかったので無視。
この回答を参考にしました。

Is there a way to crack the password on an Excel VBA Project? - Stack Overflow

結局どうすればいいの?

A: バイナリエディタでパスワードを書き換えます。

詳しくは上記のサイトを見れば分かりますが、ざっと以下のような手順です。

  1. 新しくxls形式のExcelファイルを作成し、VBAをパスワード保護する
  2. バイナリエディタで1で作成したファイルを開き、CMG=... DPB=... GC=...と書いてある箇所を探してコピー
  3. バイナリエディタVBAのパスワードが分からないExcelファイルを開き、2でコピーした値で対応する箇所を上書き