Psychson(BadUSB)のPS2251-07(2307)用パッチを公開
投稿日: 最終更新日:2016/07/11 投稿者:xx2zz
Phison 2251-07 (2307)でPsychsonのファームウェアを動かすことができたこと、
最新のバーナーを使うことで新しいバージョンの2307チップでもカスタムファームウェアを書き込めたことを報告してきましたが、
今回は、Psychsonを2307で動かすためのコードレベルでの詳細な情報を公開します。
スポンサーリンク
差分ファイル
このファイルには以下の変更が含まれています。
- PS225-07(2307)対応(差分を適用すると逆に2307以外では動きません)
- USB3.0で動作しない既存バグの修正
注意: このファイルはPS2251-07(2307)でPsychsonのカスタムファームウェアを動かす実験を目的とした研究資料です。動作の保証をするものではありません。差分適用後のプログラムを動作させたりカスタムファームウェアを書き込むことでデバイスやPCが使えなくなったり壊れても責任を負えません。自己責任で利用してください。
“Psychson2307_diff” をダウンロード Psychson2307_diff_20160710.zip – 52回のダウンロード – 4 kB
2016年07月10日 追記
クロック関連の処理(FA60~FA6B)を元コード(2303)に合わせて修正しました。
既にファイルをダウンロードされた方は再度ダウンロードしてください。
2307用CFWのビルドと書き込み方法
必要なもの
- Psychsonのソースコード
- 上記差分ファイル(Psychson2307_diff.zip)
- firmware_ps2251-07.rar
- Visual Studio 2012 Express・SDCC (https://github.com/brandonlw/Psychson/wiki/Setting-Up-the-Environment 参照)
CFWのビルド
- Psychsonのソースコードをダウンロードして展開する
- Psychsonの「templates/FWdummy.bin」をPsychson2307_diff.zipに含まれる同ファイルに置き換える
- Psychson2307_diff.zipに含まれる「firmware/serial.c」を追加する
- patchコマンド等で差分を適用する
- 「firmware/main.c」「firmware/usb.c」内の🔥マクロを展開する(後述)
- build.batを実行する
patch -p0 < firmware-firmware2307.diff patch -p0 < DriveCom-DriveCom2307.diff
CFWの書き込み
- VS2012で差分適用後のDriveComをビルドする
- DriveCom.exeを実行してファームウェアを書き込む
DriveCom.exe /drive=E /action=SendFirmware /burner=BN07V106M.BIN /firmware=fw.bin
ここで以下のようなエラーが出る場合は、バーナーがチップに対応していない(古い)可能性があります。
Action specified: SendFirmware Gathering information... Reported chip type: 2307 Reported chip ID: 98-3A-98-A3-76-51 Reported firmware version: 0.99.53 Mode: Firmware Switching to boot mode... Rebooting... Sending firmware... FATAL: System.InvalidOperationException: Header not accepted 場所 DriveCom.PhisonDevice.TransferFile(Byte[] data, Byte header, Byte body) 場所 s:\Phison\2307release-test\Psychson-master\DriveCom\DriveCom\PhisonDevice.c s:行 256 場所 DriveCom.Startup._RunFirmware(String fileName) 場所 s:\Phison\2307releas e-test\Psychson-master\DriveCom\DriveCom\Startup.cs:行 427 場所 DriveCom.Startup._SendFirmware() 場所 s:\Phison\2307release-test\Psychso n-master\DriveCom\DriveCom\Startup.cs:行 378 場所 DriveCom.Startup.Main(String[] args) 場所 s:\Phison\2307release-test\Psy chson-master\DriveCom\DriveCom\Startup.cs:行 114
その場合は、新しいバーナーが公開されているので、そっちを試すとよいかもしれません。
🔥マクロの実装
差分適用後のfirmware/main.cとfirmware/usb.cにはインラインアセンブラ(__asm~__endasm;)内に🔥から始まる以下のような行が含まれます。
この行は 🔥(対象ファイル, 始点アドレス, 終点アドレス) のフォーマットで、「対象ファイル」の「始点アドレス」から「終点アドレス」のデータ(バイナリ)をアセンブラの.dbディレクティブ形式で展開する独自のマクロを意味しています。
このマクロを展開するプログラムは今回公開する差分ファイルには含めていないので、ビルドの際はこの展開処理を各自実装してください。
何をすればいいかは、以下の画像を参考にしてください。

