【完全版】PS2251-07(2307)用Psychson(BadUSB)パッチの適用方法
投稿日: 最終更新日:2017/05/05 投稿者:xx2zz
PS2251-07(2307)でPsychsonを動かすパッチを公開しましたが、手順が複雑かつ不完全だったため、改めて簡略化したパッチファイルと手順を公開します。
スポンサーリンク
差分ファイル
このファイルには以下の変更が含まれています。
- PS225-07(2307)対応(差分を適用すると逆に2307以外では動きません)
- USB3.0で動作しない既存バグの修正
注意: このファイルはPS2251-07(2307)でPsychsonのカスタムファームウェアを動かす実験を目的とした研究資料です。動作の保証をするものではありません。差分適用後のプログラムを動作させたりカスタムファームウェアを書き込むことでデバイスやPCが使えなくなったり壊れても責任を負えません。自己責任で利用してください。
“Psychson2307_diff” をダウンロード Psychson2307_diff_20170401.zip – 2182 回のダウンロード – 5 KB
動作確認デバイス
以下のUSBメモリで動作を確認しています。
TOSHIBA TransMemory-MX V3SZK-016G
Action specified: GetInfo Gathering information... Reported chip type: 2307 Reported chip ID: 98-3A-98-A3-76-51 Reported firmware version: 2.15.55 Mode: Firmware
TOSHIBA TransMemory-MX TNU-B008GK
Action specified: GetInfo Gathering information... Reported chip type: 2307 Reported chip ID: 98-DE-98-92-72-50 Reported firmware version: 2.03.53 Mode: Firmware
その他必要なもの
2307用CFWのビルド手順
- brandonlw/Psychsonからソースコードをダウンロードして展開する
- 「Psychson2307_diff_20170401.zip」の中身を1.で展開したPsychsonのフォルダに上書き・追加する
- patchコマンドで差分を適用する (動画)
- 「firmware_ps225107.rar」の中から「FW07FF01V10153M_20140116.bin」と「BN07V106M.BIN」を取り出して「firmware」フォルダの中に置く
- 「firmware」フォルダの中に置いた「fire2db.pl」を実行する (要Perl 5)
- build.batを実行する
patch -p0 < firmware-firmware2307.diff patch -p0 < DriveCom-DriveCom2307.diff
ペイロードの埋め込み
上で作成したファームウェアファイル(bin/fw.bin)に必要に応じてペイロードファイルを埋め込みます。
参照: https://github.com/brandonlw/Psychson/wiki/Embed-HID-Payload-into-Custom-Firmware
2307用CFWの書き込み手順
- VS2012で差分適用後のDriveComをビルドする
- 「firmware_ps225107.rar」の中から「BN07V502TAW.BIN」を取り出す
- 「BN07V502TAW.BIN」をバイナリエディタで開きオフセット0x4D85, 0x4D86の値を00に書き換える
- DriveCom.exeでファームウェアを書き込む
DriveCom.exe /drive=E /action=SendFirmware /burner=BN07V502TAW.BIN /firmware=fw.bin
Comment
3.0で動かないバグはどこで修正されているのでしょうか?
またそれは2303のチップでも3.0で動かすことができますか?
>3.0で動かないバグはどこで修正されているのでしょうか?
firmware-firmware2307.diffの以下の部分になります。
- USBCTL = bmAttach | bmSuperSpeed;
+ USBCTL = bmAttach | bmHighSpeed;
>またそれは2303のチップでも3.0で動かすことができますか?
おそらく動くと思いますが、2303のデバイスが手元にないため動作は確認できていません。
教えていただきありがとうございます
試しにusb.cのUSBCTL = bmAttach | bmSuperSpeed;を
USBCTL = bmAttach | bmHighSpeed;に書き換えて試してみましたが
実行されずメモリのプロパティを見ると
デバイス USB\VID_13FE&PID_5201\5&cc190b6&0&2 を移行できませんでした。
最後のデバイス インスタンス ID: USB\VID_0FCE&PID_5198\CB5A1VC2HC
クラス GUID: {36FC9E60-C465-11CF-8056-444553540000}
場所のパス:
移行ランク: 0xF000FFFF0000F130
存在: false
状態: 0xC0000719
となっていました
自分ではどうにかできそうにないので2307のチップを探そうと思っています
いまさら質問に答えていただきありがとうございました
当サイトで使われているTOSHIBA TransMemory-MX TNU-B008GKを使用しているのですが、
ファームウェアの書き込みの際に
FATAL: System.InvalidOperationException: DeviceIoControl failed: 048F
というエラーが吐き出されて、ファームウェアの書き込みを行うことができません。
何か解決法がありましたら、ご教授いただけたら幸いです。
DriveCom.exe /drive=ドライブ /action=GetInfo
で得られる、chip type、chip ID、firmware versionは記事に記載しているものと同じでしょうか?
値が違うか、そもそもGetInfoでデータが取得できない場合はコントローラ、バージョンが変わっていてこのパッチが使えない可能性が高いです。
このページに書かれてある通り
Action specified: GetInfo
Gathering information…
Reported chip type: 2307
Reported chip ID: 98-DE-98-92-72-50
Reported firmware version: 2.03.53
Mode: Firmware
と表示されます
GetInfoの値が同じで中身だけが変わっているという可能性もなくはないですが、
初期状態でファームウェアを書き込もうとすると似たようなエラーが出た記憶があります。
この場合、カバーを外してコントローラのピンをショートさせることで強制的にBootModeで起動させた後、
DriveCom.exe /drive=E /action=SendExecutable /burner=BN07V502TAW.BIN
DriveCom.exe /drive=E /action=SendFirmware /firmware=fw.bin
の順にコマンドを実行することで正常に書き込めたはずです。
ピンショートの方法は以下のページを参考にしてください。
http://kikuzou.hateblo.jp/entry/2014/11/21/143115
この記事のコントローラは2303ですが、2307も同様に「TOSHIBA」のロゴを基準に右から2番目と3番目のピンの間です。
教えていただきありがとうございます!
無事書き込みには成功しましたが、埋め込んだPayloadが実行されませんでした。
デバイスドライバーのインストールが始まって、失敗という状況になるので、何かUSB自体に問題があるのかもしれません。