SIXAXIS

さっさに聞かれたので。沙耶です。

サブマシンにPS2のづあるしょっく2を変換通して繋いでたんですが、どうもこの子の反応が最近おかしい。

っていうかおかしいってレベルじゃないんだけどw


下方向のキーとか入れただけでなぜか決定キーが同時に連打されたりと、みょーな信号がいってるくさい。
大変うざいwwwwwwwwwwwwwwwwwww

評定クエ選んでるだけで一瞬でなんか適当にクエが受託されてたりもする。
大変うっとおしいwwwwwwwwwwwwwwwwwwwwwwwww

そのまま瓦に出かけてみたところ、開幕技能選択中に技能を選ぼうとしただけでよくわからないが開幕と同時に何かが選ばれる(ただし何を選んだかはさっぱり分からない)とかいうステキ事態になったため、こりゃあかん、と。

PS3からSIXAXISをパクることにしました。

去年もやってたんですが、筑波大の方がSIXAXISのUSBフィルタドライバを書いていたのですが、32bit専用だったこともあり、Windows 7の64bitに置き換えてからは使ってなかったのですが。

64bit版のドライバもリリースされていることですし、ま、こっちでやってみましょう。

MotionJoy

さて、Windows Vista以降の64bit版にはアホな制約があります。それは、署名入りドライバ以外はインストールできない、というふざけてるにほどがある制約です。

回避方法は二つ。
1.起動時にF8押して無署名ドライバを無効にしないようにして起動する
2.Micro$oftの態度が大変むかつくので勝手に署名して署名入りドライバということでインストールしちゃう

1.は起動ごとにやらなきゃいけないんですが、SetupReadyDriverPlusを使えばこいつが勝手に起動時に無署名ドライバOKにして起動してくれます。
ただ、Windowsのブートシークエンスに割り込むというかなり荒技と言えば荒技なので、何が起きてもおかしくないようなアプローチです。

ただ、沙耶がそんな楽な手段で満足するわけもなく。

当然2.の方法で署名してブチ込んでMicro$oftのこのバカバカしい対策をあざ笑うのが正しいと思います。
なんせ、MSの署名を受けるのにはMS様に上納金を支払って検査してもらって、という手続きが必要なため、ユーザーがなにやら自由に作ったソフトウェアをいちいちそんなことやってられないでしょうし、そこにお金かけられる人も少ないですし、さらにそんな金をMSに払った上フリーで、なんて方はもっと希少でしょう。

さらにいえば、MSの態度が大変むかつきますね。ちなみに32bitにこの制約はありません。
さらにむかつきます。

というわけで簡単に手順を。
PSPのRemoteJoyLiteなどのTypeBドライバも署名してブチ込んだしね!w

1.まずWindows SDK(もしくはVisualStudio)をブチ込む。
Windows SDKはダウンロードセンターにあるのでさくっと。VS持ってるならVSでいいけど、VS持ってるような人は普通にオレオレ証明書くらい作れると思います。

2.管理者権限でコマンドプロンプトを実行。

3.makecert -sv hogehoge.pvk -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -ss Root -len 1024 -sr localMachine -n CN=”(ぶっちゃけなんでもいい)” hogehoge.cer
これでhogehoge.pvk(プライベートキーファイル、要は秘密鍵)とhogehoge.cer(証明書だよね?)が生成される。ekuはオブジェクトIDで、どっかにリストがあるんだと思うけど調べるのがめんどくさいので、よそのサイト様をまるパクリである。

公開鍵暗号を理解していれば、公開鍵を作成したので、ここからCA局を作るんですねそうですね、って感じなのはわかってもらえるだろう。
今回は署名するだけなので、ドライバ側をいじる必要はない、はず。
WindowsってPKIだから秘密鍵と公開鍵が1ファイル、でいいんだよね、確か?

このときパスワードを聞かれる。これが秘密鍵のパスになるので適当に入れつつ覚えておく。

コマンド名でググればMSのマニュアル出てくるからそれも参考にね。-e 31/12/2099とかで証明書期限の設定とかもできるよ。

4.cert2spc hogehoge.cer hogehoge.spc
証明書からSPCを作る。SoftwarePublisherCertification、ソフトウェア提供者証明書。
要はこの証明書がWindowsの標準証明書リストの中に入ってるわけ、上納金したとこのはw

そして、その上納金収めました証明書リストで証明できないドライバははじく仕組みなわけだ。


5.pvk2pfx -pvk hogehoge.pvk -pi (password) -spc hogehoge.spc -pfx hogehoge.pfx -po (password)

かな。やりながら書いてるわけじゃないので間違ってたらごめんなさいだけど。X509の証明書+秘密鍵のペアファイルであるpvkでSPCファイルをpfx形式へ変換。


6.signtool sign /f hogehoge.pfx /p (password) /d “カタログファイル用の名前” /v 署名したいドライバファイル

名前は何でもいいような気がするけど、ドライバファイルと同じでいいんじゃない。
逆にhogehoge.pfxなんかのhogehogeはoriginal_certificationとかオレオレ証明書とかにしておくと他の無署名ドライバに適用するときもわかりやすいね。

パスワード忘れるといろいろ困るので、パスワードは忘れないようにw


ここまで完了すると、ドライバファイルへの署名は終わる。ただし、さっきも言ったようにWindowsの証明書ツリーにはhogehogeの証明書が入ってないので、これをインストールしないといけない。
つっても簡単だ。

7.hogehoge.pfxをダブルクリック->[信頼されたルート証明書\レジストリ]にインポートするだけ。
これでオレオレ証明書がインストールされた。手順自体はMSのサイトにもあるけど、あくまでテスト用だからね!配っちゃだめだからね!ってななみちゃんが涙目で言ってたので、これを添付して配布することは許されないので、各自勝手にオレオレ証明するといいと思う。

8.ドライバをいんすこする。署名されてないけどええんか!?ええのんか?とか言われても知ったことではない。

9.最後にbcdedit /set TESTSIGNING ONを実行。
ここで作ったSDKの証明書はテスト証明書ってやつなので、普段は読み込んでくれない。そこで、bceditでWindowsのテストモードを有効にしなければならない。
これやると画面のすみっこにテストモードって出るのですごくカッコ悪いが、まあ仕方ないさw

再起動するとテストモードに入り、テスト証明書が読み込まれ、テスト証明書で署名されているドライバも通常の署名済みドライバと同じ扱いで動き始める。

オレオレ証明書のpfxはpvkなんかと一緒に大事に取っておくといい。spcも一応残しとくほうがいいのかな。なくてもいいかな、pfxあれば。

この後、別に署名したいドライバが出てきたら6.からやればOKのはず。

多分こんな流れでドライバファイルを署名してインスコすれば、問題ない、と思う。
インスコした後ならドライバの更新でも使って上書きすればいいんじゃね。

うざいからこの署名必須SP1あたりではずしてくれるとありがたいんだけど、Vistaんときも外してないからMS的には外す気ないんだろうなぁ…。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です