drmdbg は taku さんから多くの貴重なアドバイスを 受け作成しています。そのため、taku & inoyan バージョンの drmdbg として公開します。 IndivBox.key v11.0.6000.7000 限定対応版として作り直しました。 動作環境 1.Windows XP sp2, Windows Vista 2.IndivBox.key v11.0.6000.7000 のみ 3.SoftICE が非常駐のこと 使い方 1.drmdbg 起動 2.wmv dir(動画ファイルのある場所)、drm2 dir(drm2 フォルダを置きたい場所) を設定 .(ピリオド)を入力すると自動的に drmdbg のある場所が入力されるようにして あります。 3.Multi Scan ボタン押すと WMV DIR で指定した階層以下全ての動画がスキャンされ、 連続的に KID/SID が取得される。(1階層に限ることも可能なように Sub Dir Scan と いうチェックボックスを設けてあります。) 従来通り、drmdbg が起動している状態で、ローカルのDRM 付き動画を 再生してもいいですし、URL 再生でも構いません。 drmdbg.ini には、フォームの位置やプログラム内部で使用している 値を書き留めてあります。削除すれば新たに作成されます。 不具合などがあれば、お知らせ下さい。 by inoyan 更新履歴 2007/11/05 12:30 サブディレクトリのスキャン時、拡張子に大文字が含まれている場合 検索対象から外れてしまう問題を修正。 2007/11/05 00:00 IndivBox.key 更新ごとの違いをある程度吸収した5。前回までで ほとんど対応出来ているものの、もう少し拡張する必要があったので修正。 2007/11/04 14:10 オブジェクトの初期化をしていなかったものがあったので修正。 2007/10/28 21:40 WMV DIR,DRM2 DIR の選択時にキャンセルすると元々の位置情報が 空欄になってしまう問題を修正。 2007/10/27 22:30 スキャン対象をサブディレクトリも可能とした。 2007/10/25 18:30 DLL のロードイベントが発生しない環境がある、もしくは発生しない場合が あることを想定して、タイムアウトを設けて DLL 情報を取得することとした。 2007/10/25 01:50 WMV DIR のパス設定画面上において改行を超える長さであった場合 Multi Scan が作動せず、DRM2 DIR がそうである場合 drm2-i.key が 生成されない問題があったのを修正。また、KID/SID が保存される ファイルの名称を drm2-i.key から DRM2.key に変更した。 DRM2 フォルダ生成の有無を選択出来るようにした。 2007/10/24 21:40 IndivBox.key,drmv2clt.dll の検出方法を以前のものにすると非常に不安定に なることを痛感したので戻した。しかし、これらの dll を検出出来ない環境が ある、もしくは通常は検出出来るのに、検出出来ない場合があることから あらかじめロードすることとした。これらの dll のパスは、drmdbg.ini に記録される。 2007/10/23 00:40 現在何の動画がライセンスを取得しているか分かる窓を設置した。 wmp 起動時にプロセス作成時の不安定さ解消のため、少し待機するようにした。 2007/10/23 00:30 IndivBox.key 等の dll のロードの検出方法を v11.0.6000.6324 までの drmdbg と同様にした。 2007/10/22 23:40 DRM2 DIR へのアクセスが不能である時、wmp がいきなり落ちることを修正。 2007/10/21 17:40 必要ないところで、ReadProcessMemory_error のメッセージボックスが 出現して停止しまうことがあったので修正。 2007/10/21 16:00 Windows Media Player が既に起動していた場合フリーズしてしまう問題を修正。 2007/10/21 00:00 Windows Vista 対応 2007/10/20 01:30 IndivBox.key 更新ごとの違いをある程度吸収した4。(しかし、これは前回時点で 考案した IndivBox.key のパターンを吸収するルールから逸脱するものではなく、 よって、今回の修正は前回の修正コードのケアレスミスの修正ということになる) 2007/10/14 08:40 SID が本来 20 バイトであるはずなのに、21 バイトとなっていた問題を修正。 2007/10/09 22:20 Multi Scan 対象のフォルダに DRM 付きでない動画が入っていた場合、その動画が 再生され続け kid/sid の取得がそこで停止してしまう問題を修正 2007/10/09 21:20 IndivBox.key が無い状態で Multi Scan を行うとフォルダ単位のスキャンが 行われない問題があったので、修正 2007/10/08 20:00 何度も wmp が再起動を繰り返してしまう現象を修正。Multi Scan の途中で WriteProcessMemory_error のメッセージボックスが出たり、Scan がフォルダ全体の ファイルに掛からなかったりしたことを修正。 2007/10/07 19:50 wmv dir、drm2 dir のフォルダ設定のファイル名に日本語が入っていたので 英語圏で文字化けが原因でエラーが発生しないように file_name_dummy とした。 2007/10/07 18:10 IndivBox.key 更新ごとの違いをある程度吸収した3。 2007/10/03 08:55 ロジックの誤りにより、SID の検出が不可能なものがあったり 二種類の SID が出力されてしまっていたのを修正。 2007/09/30 16:20 IndivBox.key 更新ごとの違いをある程度吸収した2。 2007/09/30 08:40 動画再生用スレッドを kid/sid 抜き出し時には一時停止するようにした。 2007/09/29 20:30 IndivBox.key 更新ごとの違いをある程度吸収した。 drmdbg.ini で num は使用しないようにした。 2007/09/27 15:35 実際にロードされた IndivBox.key のパスとバージョンを表示するようにした 2007/09/25 12:20 Multi Scan の動作が重くて、1つ目以降の key が取得できない 環境があったので修正 2007/09/24 20:20 DRM2 DIR と WMV DIR の指定時にファイル名を入力しないと 指定出来なかったので、あらかじめ入力するようにした。 2007/09/24 19:15 KID/SID が表示される欄を Clear するボタン追加。 drmdbg のフォームサイズ設定を無しにした。 2007/09/24 17:35 wmv dir と drm2 dir のエディット欄で、. を入力することで drmdbg フォルダのパスを入力するようにした。また、dir の最後に \ が 付いていない場合、\ を補完するようにした。 2007/09/24 16:40 動画再生と key 取得をハンドシェイクとすることで key 取得の確実さを高めた。よって、wait の設定を無くした。 2007/09/24 09:00 drm2-i.key に 0 が書き込まれてしまうのを修正。 2007/09/24 07:45 例外発生可能性箇所の修正。drm2-i.key の改行コード修正。 2007/09/24 01:00 IndivBox.key v11.0.6000.7000 限定対応版として作成 2007/06/25 19:40 不安定要素の一部を改善した3つ目。0x80000003 エラー落ちは少なくなるはず。 2007/06/20 23:10 URL 再生可能にした時から手動で確定するようになっていたのを ローカルファイルであれば、以前同様自動で取得して終了するようにした。 2007/06/19 09:50 環境依存になっていたので、コンパイルし直し。 2007/06/19 09:10 不安定要素の一部を改善した2つ目。 2007/06/19 00:45 URL 再生だと KID の取得が出来ないものがあったので修正 2007/06/18 22:15 クリップボードに転送されなくなっていた問題を修正 2007/06/18 20:40 不安定要素の一部を改善した。 2007/06/13 23:30 URL 再生で KID/SID を取れるようにした。 2007/06/04 00:15 多くのバグを修正。 2007/05/29 21:30 IndivBox.key v11.0.6000.6324 に対応 2006/04/21 00:30 WMIsContentProtected に来ない環境があるようなので、待つのをやめた。 2006/03/02 07:20 ハードウェア BP による方法は不安定で、DRM1 の取得が不能であり、 ソフトウェア BP でも、LoadLibraryExW に関するエラーを起こさずに 済むことに気づいたため、修正。このため、SoftICE の常駐は再び可能になった。 2006/03/01 19:00 LoadLibraryExW に関するエラーをハードウェア BP を使うことで回避するようにした。 これにより、一部ウィルス対策ソフトによる kernel32.dll の改竄があったとしても この問題は発生しなくなる。ハードウェア BP を使っているため、SoftICE の常駐が あっては、正常に動作しないことに気をつけること。 2005/12/30 22:50 動画ファイルサイズにより、KID の検索に失敗するエラーを修正。2005/06/21 の時点 まではこの問題は抱えていなかったが、後に MapViewOfFile を使った検索法を 採用した時に、メモリの上限のことを考えていなかったことが原因。今回以前の 検索法に戻した。key ファイル内の検索法もこれに習って同じものにした。 2005/12/27 06:20 ファイルサイズ限界まで KID の検索を行うようにした。以前に検索効率の面を考えて 妥当と思われる程度に制限をつけたが、それが問題となった報告があったため。今回の 変更点で、それが DRM2 ではなく、DRM1 であった場合、少々待ち時間が発生する欠点が 生じることになる。 2005/12/14 08:20 2005/12/04 21:50 の変更の後に、無制限に KID を検索するのは効率が悪いと いうことで、何気なしに変更した部分が他の部分と整合がとれなくなって 落ちていた問題を修正。それと、動画ファイルにアクセスがあった場合 DRM2 じゃ ないなら DRM1 である、と決定してしまっていた部分を修正。 2005/12/13 07:30 先の修正継続中。一般的な関数を繰り返し補足しない分だけ安定したはず。 2005/12/12 09:00 先の修正継続中。これでいいのかな。 2005/12/11 23:30 関数に仕掛けるbpの位置が、DLL のバージョンによって違うことを考慮に入れて 無かったことによる問題を修正。win2000 上で動作しない原因となっていた。 2005/12/11 06:55 先の修正を更に補強 2005/12/07 20:35 ファイルを選択する以前に、wmp が動画ファイルに勝手にアクセスすることに よって落ちることを回避。これは、2005/11/13 12:50 の更新では うまく機能しなかったので更に修正した。 2005/12/04 21:50 KID 取得時にファイル後方に KID がある場合不能になっていたので修正 2005/12/04 18:20 BP をバージョンごとに1つに絞っていたが、分けずに複数仕掛けることにした。 2005/12/01 21:05 DRM1 の時に wmvcore.dll v10.00.00.3650 でないのであれば終了する旨のメッセージが 出つつも、実際はプログラムが進行してしまうのを修正。 2005/12/01 19:30 DRM1 は未対応だったので、とりあえず wmvcore.dll v10.00.00.3650 のみで対応した 2005/11/13 21:10 ・drmv2clt.dll v9 と v10 の混同をしていたので修正。 2005/11/13 14:30 ・drmv2clt.dll のバージョンで判別するようにした。 2005/11/13 12:50 ・デスクトップ上に、drm2\drm2-i.key を作成するようにした。 これは同じ KID が無い場合にだけ追加する。 ・drmdbg 起動 -> wmp 起動の後少し間をおくと、wmp が前回開いた動画 ファイルを勝手にアクセスすることにより、はまってしまうのを修正。 ・無駄にバッファ領域を使うことによる負担を少なくした。 2005/11/11 19:00 IndivBox.key v10.00.00.3930 になり、全く変わってしまったので、 IndivBox.key v10.00.00.3802 未満までの対応とした。それと、 IndivBox.key v10.00.00.3646 でブレークしないことが判明したので対応。 2005/06/21 11:10 DLL の微妙なバージョンアップで SID 取得が不能になっていたので対応 2005/06/12 07:30 クリップボードに転送される文字列の終端に入っていた余計なスペースを削除した 2005/05/27 00:45 動画ファイルとして、.wma を認識。バージョン表示訂正。 2005/05/24 19:45 v10.00.00.3802 以外に対応範囲を広げた時に、v10.00.00.3802 では 対応不能となるようにしてしまっていたのを修正。 2005/05/24 19:30 絶対パスを使用していた部分を動的に取得するように改善 2005/05/24 ??:?? v10.00.00.3802 以外にも対応範囲を広げた 2005/05/19 v10.00.00.3802 限定対応版として公開