ビビビッ

Web、サーバ、ソフトウェア、バグ・脆弱性 などの情報を何人かで集まって書いていく IT/Web情報系ブログ

Psychson(BadUSB)のPS2251-07(2307)用パッチを公開

投稿日:   最終更新日:2016/07/11  投稿者:xx2zz

Phison 2251-07 (2307)でPsychsonのファームウェアを動かすことができたこと、
最新のバーナーを使うことで新しいバージョンの2307チップでもカスタムファームウェアを書き込めたことを報告してきましたが、
今回は、Psychsonを2307で動かすためのコードレベルでの詳細な情報を公開します。

スポンサーリンク

差分ファイル

このファイルには以下の変更が含まれています。

注意: このファイルはPS2251-07(2307)でPsychsonのカスタムファームウェアを動かす実験を目的とした研究資料です。動作の保証をするものではありません。差分適用後のプログラムを動作させたりカスタムファームウェアを書き込むことでデバイスやPCが使えなくなったり壊れても責任を負えません。自己責任で利用してください。

“Psychson2307_diff” をダウンロード Psychson2307_diff_20160710.zip – 52回のダウンロード – 4 kB

2016年07月10日 追記
クロック関連の処理(FA60~FA6B)を元コード(2303)に合わせて修正しました。
既にファイルをダウンロードされた方は再度ダウンロードしてください。

2307用CFWのビルドと書き込み方法

必要なもの

CFWのビルド

  1. Psychsonのソースコードをダウンロードして展開する
  2. Psychsonの「templates/FWdummy.bin」をPsychson2307_diff.zipに含まれる同ファイルに置き換える
  3. Psychson2307_diff.zipに含まれる「firmware/serial.c」を追加する
  4. patchコマンド等で差分を適用する
  5. patch -p0 < firmware-firmware2307.diff
    patch -p0 < DriveCom-DriveCom2307.diff
    
  6. 「firmware/main.c」「firmware/usb.c」内の🔥マクロを展開する(後述)
  7. build.batを実行する

CFWの書き込み

  1. VS2012で差分適用後のDriveComをビルドする
  2. DriveCom.exeを実行してファームウェアを書き込む
  3. 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ディレクティブ形式で展開する独自のマクロを意味しています。

このマクロを展開するプログラムは今回公開する差分ファイルには含めていないので、ビルドの際はこの展開処理を各自実装してください。

何をすればいいかは、以下の画像を参考にしてください。

- BadUSB , , ,

Message

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

Loading Facebook Comments ...

関連記事