インサイドNintendo Switch

194b192123e0671dc9f81647d61411a6?s=47 Ren Kimura
November 18, 2017

インサイドNintendo Switch

My talk @ kernelvm 関西 #8

194b192123e0671dc9f81647d61411a6?s=128

Ren Kimura

November 18, 2017
Tweet

Transcript

  1. インサイド 関西

  2. 自己紹介 • るくす • 神戸大学大学院 • 興味 • 専門分野 ローラー

    最近はチャージャーも勉強中
  3. • 任天堂より 年 月 日に発売されたゲーム機 • 初期は というコードネームで開発が進められていた • 本体の左右両側に

    を接続、分離して遊べる • ジャイロセンサーやタッチスクリーンも搭載 • ドックを使うとテレビへの出力も
  4. Type CPU Cortex-A57 Memory 4GB GPU 256-core Maxwell Storage Toshiba/Samsung

    32GB eMMC Wifi/BT Broadcom BCM4356XKUBG
  5. • は の を した物。マイクロカーネル。 ◦ ではないので注意 の情報は間違ってます • ブラウザは

    ベース に使用 • 実行バイナリフォーマットも独自の を採用 • アプリはロード後 と呼ばれるダイナミックリンカに よってアドレス再配置、及び のような初期化処理を行う。
  6. バイナリフォーマット • の独自実行バイナリフォーマット • ゲームやアプリはこのフォーマット .text section ※各セクション本体は で圧縮されている パッキング

  7. バイナリフォーマット • 独自の動的リンクライブラリフォーマット の 、 の • 署名された正規の のみロード可能 署名の検証は

    フォーマットを利 用
  8. バイナリフォーマット • や 内に埋め込まれているフォーマット • 動的リンクに必要な情報を管理する専用領域 Header(NRO) .text .rodata .data

    Header(MOD) Module Objects... .dynamic unwind NRO Binary
  9. ソフトウェア • という海外のチームが アプリケーション開発用 の簡単なライブラリとエミュレータを公開 • をポーティング ◦ 個のシステムコールを実装しただけのプロトタイプ •

    エミュレータは をベースとした簡易な物 ◦ のフック機能を使って、システムコール発行等のイベントをキャッチして ログに出力するだけ。どちらかというと解析用途。 ReSwitched Team
  10. 解析ツール • 実行バイナリ解析、変換ツール ◦ 用の 実行バイナリを に変換するツール • 逆アセンブラ •

    逆アセンブラ NRO support by @pancake NSO support by @RKX1209
  11. None
  12. セキュリティ事情 • チームが エクスプロイトを公開 ◦ 元々 氏がデモしていた物を として更に発展 • カーネルエクスプロイト

    ◦ 氏が 週間前に成功 技術的な詳細は不明 ◦ デバッグ用のシステムコール発掘に成功し、デバッガの開発まで行っている • 任天堂の公式情報によると、 の を利用している ◦ 暗号化や署名検証等の な処理は で実行されている可能 性
  13. セキュリティ事情

  14. エミュレータ • 現在 エミュレータ、 を開発中 ◦ 現段階で公になっている エミュレータはまだ無い • 進捗状況

    ローダー完成。 エミュレータ を開発中 • 基本的なエミュレーション方式は エミュレータの を参考 • バイナリから への 変換方式 • 勿論、法的にグレーな怪しい機能は実装しない
  15. None
  16. 今後の課題 • エミュレーション方式の検討と実装 ◦ フォワーディング フルエミュレーション パススルー? • その他周辺機器のエミュレーション •

    デバッガ等の開発環境の整備 これにはカーネルエクスプロイトによるハックが必 要 • をやめる