Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ME2-Writeup — 死んだUSBプロトコルの復元:ホットナイフが解き放つ携帯機器の秘密、忘れ去られたUSBインターフェースを蘇らせる学際的な旅 | Kitploit
ツール/GitHubGitHub/coremaze/me2-writeup
組み込みシステムセキュリティリバースエンジニアリングデータ復旧ハードウェアハッキングハードウェアセキュリティバイナリ解析学習と教育ファームウェア解析
GitHubcoremaze/me2-writeup

ME2-Writeup

死んだUSBプロトコルの復元:ホットナイフが解き放つ携帯機器の秘密、忘れ去られたUSBインターフェースを蘇らせる学際的な旅

リポジトリを見る
482275ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

ヒートガンとナイフでME2のUSBをリバースエンジニアリング

背景

2024年、bjiruがME2ハンドヘルドデバイスに関する動画をアップロードしました。これは2008年頃に製造されたおもちゃで、USBを使ってデバイスとオンラインワールド間でポイントやジェムを同期する機能を備えていました。このゲームは非常にニッチだったため、少なくともbjiruがオンラインゲームクライアントを提供するまで、ソフトウェア、ドライバ、アセットはアーカイブされていませんでした。

私はMiuchiz Rebornのリーダーです。これは2015年に始まった取り組みで、オンライン部分とUSBで接続されたハンドヘルド部分を持つ類似のゲームの保存、リバースエンジニアリング、エミュレーション、アクセシビリティの維持を行っています。ゲームの年代とタイプが似ているため、ME2は2018年に私のMiuchizコミュニティから既に注目されていました。彼らは(誤って)アーキテクチャ上の類似性があると考えていたからです。私はこのデバイスの存在を何年も前から知っていましたが、bjiruの動画がようやく私に研究を始めるきっかけを与えました。

私の最初の取り組みは、bjiruのコンピュータゲームのコピーを再び機能させるために必要なサーバーを再現することだけに費やされましたが、その過程で必然的に注意はハンドヘルドデバイスに移りました。オンラインゲームの再現は、デバイスとの間でポイントを同期するメカニズムなしには決して完全とは言えません。結局のところ、コンピュータとME2デバイス間のこの通信がゲームの主要なギミックでした。私は、Miuchizハンドヘルドデバイスでの以前の経験が、彼らが期待するどんな通信儀礼を解きほぐすのにも役立つだろうと考えました…リバースエンジニアリングできるコードさえ手に入れば。

私の好奇心はME2の犠牲を要求しました。eBayは不換紙幣の犠牲を要求しました。やがて、これらの標本が私の前に横たわりました。

ME2 Devices

これらは小さなユニットで、数個のボタンとメスのmini-USBポートしかありません。箱にはケーブルが含まれていますが、ソフトウェアやドライバのディスクはありません。そのUSBポートがコンピュータとハンドヘルド間でポイントを同期する方法になるはずでしたが、私がMiuchizハンドヘルドデバイスで同じ旅に乗り出したときは、付属のWindowsソフトウェアの動作をリバースエンジニアリングすることでフラッシュメモリへの完全なアクセスを獲得しました。ME2にはそのようなソフトウェアがないため、デバイスとの通信方法を解明するためのリバースエンジニアリングの対象がありません。Wayback Machineやbjiruを調べた後でも、これらのデバイスと通信するために使用されていたソフトウェアのコピーは現存していないようです。名称はME2 Desktop Buddyだったと思いますが、そのアプリケーションはbjiruが復元したゲームクライアントとは別のものでした。ハンドヘルドはリムーバブルストレージデバイスとして認識されますが、その内容は単にME2ゲームをダウンロードするためのオンラインサイトに誘導するもので、現在は利用できません。

進むべき道は明らかです。残された選択肢はただ一つ:ハードウェアを開けることです。

内部構造

ME2 PCB

メインのME2ファームウェアはSST39VF3201に保存されています。これは2メガワード(4メガバイト、16ビットアドレス可能ユニット)のフラッシュチップです。メインのマイクロコントローラは…硬いエポキシのグロブトップの下にあります。これはチップオンボード(CoB)として知られ、通常はコスト削減の手段ですが、内部の集積回路に関する識別情報を隠してしまうという副作用があります。通常のパッケージのチップは、フラッシュチップのようにそれを識別するマーキングが通常あります。このようなデバイスで使用されるマイクロコントローラはしばしば内部ROMを含むため、私がリバースエンジニアリングしたいUSBコードの一部または全部がそのROMにある可能性があります。そのコードをROMに持つ利点は、ブリックしたデバイスの回復や、製造者が選択すれば組み立て後にデバイスをフラッシュできることです。そのROMは、私が識別する方法がないチップの内部に存在します。

フラッシュチップからのデータの取得は、簡単で十分に文書化されたプロセスです。チップをはんだ除去し、XGecuのような市販のフラッシュプログラマにセットして、その内容をダンプします。マイクロコントローラのROMからも情報が必要であれば、それはより簡単ではありませんが、保護がされていないと思われるこのようなデバイスではまだ実行可能です。過去に、Tamagotchi PixのSPIフラッシュに、そのブートROMをフラッシュチップの空き領域にコピーするコードを追加したことがあります。その後、そのコードを注入するために使用した同じフラッシュプログラマで読み取ることができました。しかしその場合、マイクロコントローラは適切にパッケージされており、モデル情報が印刷されていたため、データシートを見つけて、使用されている命令セットとROMがメモリ空間のどこにあるかを知ることができました。この時点では、ME2の謎のチップオンボードについてそのような情報は一切ありませんでした。

抽出

不確実性はあるものの、ここから先に進む唯一の明白な方法は、フラッシュチップをはんだ除去することです。また、フラッシュチップ用のソケットをいくつか購入し、ハンドヘルドのPCBにはんだ付けできることを期待していました。これにより、ME2を再プログラムし、マイクロコントローラから内部ROMをダンプするコードを書く必要がある場合に素早く反復できるようになります。

残念ながら、はんだごてではチップを損傷せずにフラッシュチップを取り外すことができませんでした。複数回の失敗の後、このスキルの問題を解決するために、代わりにリワークステーション(実質的には500°Cに達すると主張するヒートガン)を購入し、熱風ではんだを溶かしてチップを取り外しました。これにより問題なくフラッシュの内容をダンプできましたが、実際に購入したソケットを使用することが私の能力を超えていることが明らかになりました。48本の小さなピンをすべてPCBにはんだ付けするだけでなく、ソケットのプラスチックが溶けるのを避けるために素早く行わなければなりません。そのためのツールもスキルもなかったため、ROMが必要なら別の戦略が必要でした。

しかし、ダンプは良好で、ファームウェアダンプ内の非圧縮ビットマップを検出するために既に構築したツールを使用して、通常デバイスに表示される画像を見つけることができました:

Images in firmware dump

命令セットの発見

フラッシュチップからファームウェアのダンプを入手しましたが、本格的なリバースエンジニアリングを行う前に、少なくともデバイスがどの命令セットで動作するかを知る必要があります。ハードウェア自体にマーキングはなかったため、推測するしかありませんでした。Ghidra(オープンソースの逆アセンブラ、デコンパイラ、そして私を雇い続けているガタガタの悪夢)でコードを分析しようとしました。Ghidraに付属するほぼすべての種類のプロセッサスペックを試しました。ARMの変種?6502の子孫?MIPS?Ghidraがサポートする他のもの?すべて「いいえ」と断定されました。

あらゆるものを試しましたが、このコードを逆アセンブルできるものはありませんでした。それがコードであることはわかっていました。探していたコードの一部さえ見つけることができたからです!

USB code in hex editor

Miuchizハンドヘルドデバイスでの過去の作業から、USBマスストレージデバイスの動作についてある程度の知識がありました。このスニペットはほぼ確実に'U', 'S', 'B', 'S'をどこかに移動していると特定しました。これは、私が探していた種類のUSBマスストレージ通信に特有のシグネチャです。このデバイスとやり取りする方法を解明するためにリバースエンジニアリングが必要なUSBコードの一部または全部が、間違いなくこのフラッシュダンプに含まれていましたが、それがどの命令セットで書かれているか手がかりがなく、逆アセンブルできませんでした。

この時点で、私は数台の壊れたME2ユニットを持っていました。馬鹿げているように思えますが、もしかするとエポキシブロブの下のどこかにマーキングがあるかもしれません?おそらくないでしょうが、研究段階では、完全に破壊されたユニットが単に壊れただけのものより価値があることもあります。

さて、私はヒートガンとナイフを持っていました。ことわざにあるように、ヒートガンとナイフを持っていると、すべてが…釘に見える?そんな感じだったと思います。

Chip-On-Board off board

リワークステーションを最高温度に設定し、ナイフでこじ開けることで、エポキシブロブ全体が解放されました。その除去により、チップオンボード(今やオフボード)の下にマーキングはありませんでした。ただし、マイクロコントローラのシリコンダイの下面が見え、エポキシにはいくつかの気泡があり、そこからボンディングワイヤが見えます。

先ほど言ったように、破壊されたユニットが壊れたユニットよりも価値があることもあります。そして私はヒートガン、ナイフを持っており、慣用句を復習する切実な必要性がありました。

Microcontroller freed from its epoxy

ああ。

ふーん。

CoBをそんな方法で脱カプセル化できるとは知りませんでした。きれいに飛び出しました。その温度を考えると、私の方向に飛んでこなくて良かったです。非常にきれいですが、ここから先に進む方法が実際にあります。電子顕微鏡で拡大してみましょう。

User manual claiming that a digital microscope is an electron microscope

まあ、それが取扱説明書の主張です。公平を期すために確認しましたが、少なくとも1つの電子が含まれています。

小さな部品が目を悩ませる他のおもちゃを破壊「ハッキング」している間、はんだごての先で何が起こっているのかほとんどわかっていないことが明らかになりました。友人からの非常に丁寧な推薦により、コインやはんだ付け用の安価なデジタル顕微鏡を購入しました。

Poor quality die shot

取扱説明書の主張とは裏腹に、この顕微鏡はこの作業に本当は適していませんが、この画像を撮影しました。ダイ上のテキストを解読できるレベルには程遠いですが、全体的なレイアウトは明らかであり、このような画像をさらに見つけることができる場所を知っていました。

Siliconpr0n(現在はSiliconprawnとして知られています)には、多くの人々がダイショットをアップロードしたアーカイブがあります。ただし、通常は私のものよりも高品質です。残念ながら、私が持っていた情報ではサイトを有用に検索する方法がなかったため、クリック、スクロール、繰り返しを始めました...

Matching die shot

その指紋が記録に残っています!

数時間後、午前4時に、ついに見覚えのあるものを見つけました。私のものより高品質ですが、レイアウトは間違いありません。John McMasterが撮影した一致する画像と比較すると、180度回転したGPL162002A(またはB)です。これはGeneralPlusマイクロコントローラで、データシートはインターネットで入手可能であり、命令セットはμ'nSPです。

ファームウェアのリバースエンジニアリング

μ'nSPは、この種の玩具や年代ではかなり一般的であることが判明しました。ラテンアルファベットにない文字を含む命令セットを推測できなかったことをお許しいただけると幸いです。それでも、Ghidraが標準でサポートしていないほどニッチです。幸い、既存のサードパーティの作業があるため、Ghidraで逆アセンブルを開始し、関数に名前を付け、データシートからレジスタ名をインポートすることができました。

ここに、16進ダンプだけからUSBコードであると確信していた関数があります。マイクロコントローラのデータシートで指定されているUSBレジスタとやり取りしています:

USB function decompilation

前述の通り、私はこのようなUSBマスストレージデバイスの通信方法についてある程度既に知識がありました。特に、libusbを使用してMiuchiz USBライブラリをmacOSに移植する実験的な作業のおかげです。USBマスストレージデバイスは本質的にSCSIコマンドをトンネルし、それらはオンラインで十分に文書化されています。例えば、デバイスからの読み取りや書き込みを要求するコマンドがあります。

SCSI dispatch function decompilation

ツールをダウンロード