Web Analytics

Xbox_SMC

⭐ 58 stars Japanese by Prehistoricman

🌐 言語

Xbox_SMC

オリジナルXboxからのPIC16/Xyclopsダンプと、逆アセンブル済みのIDAデータベースを含み、一部リバースエンジニアリングが行われています。

オリジナルXboxのPIC16LC63Aの画像

Xyclopsのフラッシュ方法(XycloMod)

「Xyclops」ディレクトリとREADME をご覧ください。

ダンプ

各PICダンプの .bin ファイルは、IDAに正しく読み込めるようにバイトが入れ替えられています。つまり、PICメモリの最初のワードは byte_0 + byte_1 << 8 です。

.idb のIDAデータベースには、変数情報やデータベースノートパッド上のいくつかの観察事項が記載されています。

SMCバージョンの詳細については、このWikiページを参照してください: https://xboxdevwiki.net/Xboxen_Info

B2A

DVT3 Xboxからダンプされたものです。P01と同じコンフィグワードです。また、製品版PICとは異なり、コンフィグ領域にデバイスIDが 0000 0000 000B 002A として書き込まれています。

ブートチャレンジが完全に省略されています。

D01

XDK BETA 2 Xboxからダンプされたものです。ブートチャレンジが省略されている点以外はP01と同一です。期待されるブートチャレンジレスポンスを計算する関数は残っていますが、一度も呼び出されません。

DXF

XDK D2 デバッグキットからダンプされたものです。D01と非常に似ていますが、トレイロジック、過熱ロジック、ブートロジックが若干異なります。ブートチャレンジの省略方法はD01と同じです。

D2E

Tuscany (v1.6) 開発キットからダンプされたものです。Xyclopsチップは X01202-001 とマークされており、リテールユニットにある A-A02 または A-B01 ラインがありません。

FC00のデバッグシリアルコードはリテールP2Lダンプと一致します。0x4000 から 0xFBFF まで奇妙なデータパターンがあります。

P01

v1.0 Xboxからダンプされたものです。コンフィグワードは0x86です: SMCクローンではコード保護を無効にするために、0x3FB6 のコンフィグ値が適しています。

P11

v1.3 Xboxからダンプされたものです。P01と同じコンフィグワードです。

P01と比べてP11にはいくつかの小さな変更があり、追加のSMBusコマンド(0x22の書き込み)、LED優先順位の違い、ブートのタイミング緩和などがあります。

v1.3とv1.4のスクランブルダンプを比較したところ一致しました。これは、両方が同じプログラムを持っている可能性が非常に高いことを意味します。

P2L

v1.6 Xboxからダンプされたもの。XyclopsリビジョンA-A02。Intel 8051コードを含むが、機能不明の特殊機能レジスタが多数ある。

デバッグシリアルはFC00のコードによって動作する。実行を一時停止したり、データをダンプしたり、レジスタ/RAMへ書き込むなど、粗いデバッガのようだ。

Xyclopsダンピング

Xyclopsチップには「デバッグ」用のピンが3つある:TXD(ピン64)、RXD(ピン63)、DEBUG(ピン29)。DEBUGピンをHighにするとTXとRXピンのシリアルポートが有効になる。シリアルは9600ボーで動作する。

プロトコルは通常4バイトコマンドに基づいており、フォーマットは

となっている。

コマンド0x14は一度に64バイトのBIOSデータをダンプし、0x15は一度に64バイトのSMCプログラムデータをダンプする。XyclopsからのダンプP2L.binがリポジトリに含まれている。xyclops_dumper.pyも同梱されており、自分のマシンをダンプできる。

PICダンピング手法

詳細は https://wiki.recessim.com/view/PIC_Burnout

PICはコードプロテクションが有効になっており、全データが0000として読み出される。いくつかのトリックを使って代わりにスクランブルされたデータを出力させ、犠牲チップを使ってスクランブルアルゴリズムを発見し、さらにROMデータをエクスプロイトでいくつかのビットを既知値に変更した。こうして複数回スクランブルダンプから必要な情報を抽出し、元データを復元できた。

PICProgrammer

PICProgrammerは、私の研究で使用したRP2040用Arduinoプロジェクトのひとつ。PIC上でICSP(インサーキットシリアルプログラミング)操作を実行する簡易コマンドラインインターフェイスを提供する。柔軟性やメーカー非推奨の操作が可能なため、PICkitなどの専用プログラマより好まれる。

使用前に電子工学とプログラミングの十分な理解が必要であり、コマンド実行前にはその内容をよく確認すること。

--- Tranlated By Open Ai Tx | Last indexed: 2025-09-20 ---