おっぱいとデバッガ

これまで一度だけおっぱいを見る仕事をしたことがある。長年IT関係の仕事をしているとたまに奇妙な依頼が舞い込んできたりするもので、これもそんなお話。
 
2000年代初頭、Yahoo!BBが登場して本格的にブロードバンドの時代になった。そしてこれをきっかけにリッチコンテンツの波が来るということは誰しも予想できた。大手もベンチャーもさまざまなアプローチで動画をビジネスにしようとしていた。
僕もそんな一攫千金を狙うベンチャー企業にいて、プリセールスエンジニアとして連日企業をまわって動画ソリューションの提案をしていた。ユーザーが作る動画なんて発想がなかった当時、扱うのはハリウッド映画や教育ビデオのような作り込まれたコンテンツだ。当然、著作権とその保護技術であるDRMは最重要課題であるように思えた。だから、みんななんとかして不正コピー防止技術を確立しようとしていた。
 
そんなとき、上司からちょっと調べてみてくれとファイルを渡された。最近開発されたコピー防止機能付動画だそうだ。なにやら動画データと動画プレイヤーが一体化した実行形式ファイルになっている。起動時に条件を満たさないと再生されないという仕掛けが組み込んであるとのこと。
ふふん、なるほど。つまりこれは挑戦状なのだな。破ってみろということだ。
「いつまでにできる?」
「そうですねえ、提案書の作成もたまっているので三日ください」
「内容はおっぱいだそうだ」
「あ、やっぱり今日中になんとかなりそうです」
 
知り合いのアダルトビデオメーカーが導入を検討していて相談されたのだと。まったくこの上司の人脈は謎が多い。
それはそれとしてさっそくデバッガで動きを追いかけてみた。起動の速さから見て、そう複雑な処理はしていないように見える。初期化の後、いくつかの条件をチェックするのだろうが、たとえどんなに複雑なチェックをしたとしても最終的にOK/NGのたったひとつの分岐命令に到達するはずだ。できるだけ初期化やチェック処理にまどわされずに、キーとなる分岐命令を見つけ出すのがポイントだ。
 
ところでプリセールスエンジニアは長く何かに集中できる時間があまりとれない。デバッガで作業をする間にも次のアポを入れるための電話をしたり、契約の決まった案件について開発チームに説明の打ち合わせが入ったりする。
そういった合間をぬって逆アセンブルされたソースを流し読み、ブレークポイントを多数設定して実行する。しばらくコードを追いかけるとあきらかに怪しい箇所が見つかった。比較命令の後にJNBで分岐している。ジャンプせずにそのまま進むと動画は再生されず、すぐにプログラムが終了する。まさにここだ。
 
そのアドレスの値をJNBからJMPに書き換えたちょうどそのとき、後輩社員が開発の進め方について相談に来た。この後輩は相談に来るだけましなのだが、ノーアイデアで来るから困る。そのあたりを少し厳しく指摘しつつ、明日訪問する企業の予定を横目でチェックして、なにげなくデバッガを実行した。
 
その瞬間、プロセッサはおそるべき速度で初期化処理を終え、条件チェックを律儀におこなったあと、巧妙に書き換えられた無条件ジャンプが実行され、起動ロジックに全力で突入し、つまり僕のモニターにおっぱいが大きく映し出された。
オフィスに似つかわしくない音声と映像が最大に近い大きさで流れていた。ついに鍵を破ったという達成感に浸るまもなく、あわてて再生を止めることはかえって逆効果になるような気がして、だからといってどうすることもできず、後輩社員を叱責する言葉はなんだか妙に丁寧な言葉遣いになりましたのでございました。
 
当時は、そんな夢多きネットベンチャー達が未来を模索して日々もがいている時代だった。YouTubeが登場して動画ビジネスが形になりはじめるのはそれから5年以上後のことである。