波音 さんのプロフィールぱっぱらぱおーんブログリストつながりその他 ツール ヘルプ

ブログ


    12月4日

    Xbox 360コントローラの有志ドライバとか

    Windows 7発売でx64環境に移行した人が多いようで、「署名のないドライバ」とか「Xbox360 コントローラ 64bit」とかで飛んでくる方が多いようです

    んー、自己責任だということと、出所不明の物をカーネルモードで起動することの危険性さえしっかり理解していれば、別に隠す必要もないかなぁってことで、手順明かし

    まず、必要なもの、以下のいずれか

    まぁ、お手軽なのはWindows SDKですかね
    んで、いずれかを署名作業用のPCにインストール
    署名作業用のPCは、Windows 7が動いているターゲットPCでもいいし、他のWindows XPなマシンでもOK

    インストールが完了したら、Windows SDKもしくはWDKのコマンドプロンプトを管理者権限で開きます
    別に全ての作業に管理者権限が必要なわけじゃないけど、まぁ、めんどうなのでね
    Windows SDK v7.0の場合: スタートメニュー→すべてのプログラム→Microsoft Windows SDK v7.0→CMD Shell
    DDK 7600.16385.0の場合: スタートメニュー→すべてのプログラム→Windows Driver Kits→WDK 7600.16385.0→Build Environments→Windows 7→x64 Free Build Environment
    普通のコマンドプロンプトを管理者権限で開いてもいいけど、PATHの設定とかは自分でやってねってことで

    Step 1 署名用の鍵を作成

    鍵の作成には、以下のようなコマンドを実行します(これは別に管理者権限なくてもOK)

    makecert -r -pe -ss my -n CN=<通常名>  <公開鍵ファイル名>

    <通常名>および<公開鍵ファイル名>は、各自適切なものに置き換えてください
    なお、<公開鍵ファイル名>の拡張子は.cerにしておきましょう

    makecert実行例 

    続いて、鍵が作成されたことの確認と、将来のために鍵のエクスポートを行います
    以下のコマンドを実行します

    certmgr.msc

    拡張子の違うcertmgr.exeというコマンドもある(後ほど出てきます)ので、きちんと拡張子まで入力しましょう
    なお、certmgr.exeはSDKやDDKに付いてくるツールですが、certmgr.mscの方はOSに最初から入っているツールです

    certmgr.msc実行

    個人証明書 

    上の画像は、既に信頼されたルート証明機関や信頼された発行元にも登録してある状態なので、多少見栄えが違うと思いますが、個人のところにCNで指定した<通常名>の証明書ができていれば大丈夫
    鍵ファイルのエクスポートは、証明書を右クリックしてコンテクストメニューを開き、すべてのタスク→エクスポートと選ぶと、証明書のエクスポート ウィザードが開くので、指示に従っていけばよいです
    その際に注意することは、

    • 秘密鍵をエクスポートする内容に含めること
    • 証明書ストアにある個人証明書の秘密鍵はこれから使うので、エクスポート後に秘密鍵を削除しないこと
    • 秘密鍵は名前の通り秘密なので、パスワードはしっかり厳重に

    といったところでしょうか
    エクスポートしてできた*.pfxファイルは、OSの再インストール等で個人証明書ストアがまっさらになった際に、新しい鍵を作り直すことなくインポートするのに使います
    その際、証明書のエクスポート ウィザードで入力したパスワードが求められます
    OS再インストール等の際に、鍵作り直して署名しなおすからいいやーって人は別に証明書をエクスポートする必要はないですが、*.cerと*.pfx、署名済みバイナリがあればSDKとか入れなくてもテスト署名を有効化できるので、エクスポートしておいた方がいいかなぁって思う

    Step 2 信頼されたルート証明機関と信頼された発行元に公開鍵を登録する

    makecertで作成した*.cerファイルをダブルクリックして、証明書のインポートウィザードから「信頼されたルート証明機関」と「信頼された発行元」に登録してもよいですし、以下のようなコマンドラインでも登録できます

    ‘ [信頼されたルート証明機関]に登録
    certmgr.exe -add <公開鍵ファイル名> -s -r localMachine root
    ’ [信頼された発行元]に登録
    certmgr.exe -add <公開鍵ファイル名> -s -r localMachine trustedpublisher

    この作業が終わったら、certmgr.mscで証明書の状態に問題がないことを確認しましょう
    個人証明書をダブルクリックしてみて、信頼されてない云々が出ていなければ大丈夫です

    Step 3 テスト署名されたドライバを有効にする

    管理者権限で以下のコマンドを実行するだけです

    bcdedit.exe /set TESTSIGNING ON

    Step 4 ドライバモジュールに署名する

    署名の方法は、カタログファイルを用意する方法と、ドライバモジュールそのものに署名してしまう方法がありますが、今回は後者を選びます
    何でかというと、カタログファイルを用意するのが面倒だからです
    カタログファイルを使用した署名を行う場合、inf2catというツールでカタログファイルが作成できますが、そのためには*.infファイルの内容をキッチリ用意しなければいけません
    また、インストーラが用意されていて、自動的に署名のないドライバをインストールしてくれてしまうようなケースでは、カテゴリファイルの作成は*.infファイルを探すところから始まるため、更に面倒です
    しかし、ドライバモジュールそのものへの署名であれば、署名すべきドライバモジュールさえ特定すればOKです
    ドライバモジュールの特定は、デバイスマネージャからドライバの詳細を見れば概ね見当がつきます
    ドライバの詳細で出てくるファイルのうち、Windows\system32\Driversにある*.sysファイルに署名しておけばだいたいOK?

    で、実際に署名する際のコマンドラインですが、個人証明書ストアに秘密鍵がある場合は、以下のようになります

    signtool sign -v -s my -n <通常名>  <署名対象モジュールのパス>

    秘密鍵をエクスポートした*.pfxファイルを使って署名する場合は、以下のようになります

    signtool sign -v -f <*.pfxファイルのパス>  -p <エクスポート時に入力したパスワード>  <署名対象モジュールのパス>

    ちなみに、Xbox360 ワイヤレスコントローラーレシーバーの有志ドライバの場合、署名すべきモジュールは以下の通りです

    %SYSTEMROOT%\System32\drivers\x360wchm.sys

    署名前のドライバモジュールは、OSからロードが拒否されている状態なので、セーフモードに入ったりしなくても、管理者権限さえあれば署名できます
    つまり、まずは強引に未署名のドライバをインストールしてしまい、再起動して署名、そして再度再起動すれば、OSに認識されるようになります
    なお、signtool自体の実行には管理者権限は不要ですので、別の作業ディレクトリであらかじめ署名しておき、drivers下にアクセスする際のみに管理者権限で操作するというのが理想でしょう

    コメント

    しばらくお待ちください。
    入力されたコメントは長すぎます。短くしてください。
    何も入力されていません。もう一度やり直してください。
    現在、コメントを追加できません。後でもう一度やり直してください。
    コメントと書くには、保護者 (ほごしゃ) の方の許可 (きょか) をもらってください。許可をリクエストする
    保護者 (ほごしゃ) の方が、あなたがコメントを書けないようにしています。
    現在、コメントを削除できません。後でもう一度やり直してください。
    1 日に投稿できるコメントの最大数を超えました。24 時間経過してから、もう一度やり直してください。
    あなたが他のユーザーに対して迷惑行為を行っている可能性があると確認されたため、お使いのアカウントによるコメントの投稿を無効にしています。誤って無効にされたと思われる場合は、Windows Live のサポートにお問い合わせください。
    コメントを投稿する前に、以下のセキュリティ チェックを完了してください。
    セキュリティ チェックに入力する文字は、画像に表示されている文字または音声で流れた文字と一致していなければいけません。

    コメントを投稿するには、お使いの Windows Live ID でサインインしてください (Hotmail、Messenger、または Xbox LIVE を既に使用している場合は、そのアカウントが Windows Live ID です)。サインイン


    Windows Live ID をお持ちでない場合は、アカウントを新規登録してください。

    トラックバック

    この記事のトラックバックの URL は次のとおりです。
    http://pappara-paoohn.spaces.live.com/blog/cns!F13291F1543DA680!1470.trak
    この記事を参照しているブログ
    • なし