$30 off During Our Annual Pro Sale. View Details »

インサイドNintendo Switch

Ren Kimura
November 18, 2017

インサイドNintendo Switch

My talk @ kernelvm 関西 #8

Ren Kimura

November 18, 2017
Tweet

More Decks by Ren Kimura

Other Decks in Programming

Transcript

  1. インサイド
    関西

    View Slide

  2. 自己紹介
    ● るくす
    ● 神戸大学大学院
    ● 興味
    ● 専門分野 ローラー
    最近はチャージャーも勉強中

    View Slide

  3. ● 任天堂より 年 月 日に発売されたゲーム機
    ● 初期は というコードネームで開発が進められていた
    ● 本体の左右両側に を接続、分離して遊べる
    ● ジャイロセンサーやタッチスクリーンも搭載
    ● ドックを使うとテレビへの出力も

    View Slide

  4. Type
    CPU Cortex-A57
    Memory 4GB
    GPU 256-core Maxwell
    Storage Toshiba/Samsung 32GB eMMC
    Wifi/BT Broadcom BCM4356XKUBG

    View Slide

  5. ● は の を した物。マイクロカーネル。
    ○ ではないので注意 の情報は間違ってます
    ● ブラウザは ベース に使用
    ● 実行バイナリフォーマットも独自の を採用
    ● アプリはロード後 と呼ばれるダイナミックリンカに
    よってアドレス再配置、及び のような初期化処理を行う。

    View Slide

  6. バイナリフォーマット
    ● の独自実行バイナリフォーマット
    ● ゲームやアプリはこのフォーマット
    .text section
    ※各セクション本体は で圧縮されている パッキング

    View Slide

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

    View Slide

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

    View Slide

  9. ソフトウェア
    ● という海外のチームが アプリケーション開発用
    の簡単なライブラリとエミュレータを公開
    ● をポーティング
    ○ 個のシステムコールを実装しただけのプロトタイプ
    ● エミュレータは をベースとした簡易な物
    ○ のフック機能を使って、システムコール発行等のイベントをキャッチして
    ログに出力するだけ。どちらかというと解析用途。
    ReSwitched Team

    View Slide

  10. 解析ツール
    ● 実行バイナリ解析、変換ツール
    ○ 用の 実行バイナリを に変換するツール
    ● 逆アセンブラ
    ● 逆アセンブラ
    NRO support by @pancake NSO support by @RKX1209

    View Slide

  11. View Slide

  12. セキュリティ事情
    ● チームが エクスプロイトを公開
    ○ 元々 氏がデモしていた物を として更に発展
    ● カーネルエクスプロイト
    ○ 氏が 週間前に成功 技術的な詳細は不明
    ○ デバッグ用のシステムコール発掘に成功し、デバッガの開発まで行っている
    ● 任天堂の公式情報によると、 の を利用している
    ○ 暗号化や署名検証等の な処理は で実行されている可能

    View Slide

  13. セキュリティ事情

    View Slide

  14. エミュレータ
    ● 現在 エミュレータ、 を開発中
    ○ 現段階で公になっている エミュレータはまだ無い
    ● 進捗状況 ローダー完成。 エミュレータ を開発中
    ● 基本的なエミュレーション方式は エミュレータの を参考
    ● バイナリから への 変換方式
    ● 勿論、法的にグレーな怪しい機能は実装しない

    View Slide

  15. View Slide

  16. 今後の課題
    ● エミュレーション方式の検討と実装
    ○ フォワーディング フルエミュレーション パススルー?
    ● その他周辺機器のエミュレーション
    ● デバッガ等の開発環境の整備 これにはカーネルエクスプロイトによるハックが必

    ● をやめる

    View Slide