Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
インサイドNintendo Switch
Search
Ren Kimura
November 18, 2017
Programming
18
13k
インサイドNintendo Switch
My talk @ kernelvm 関西 #8
Ren Kimura
November 18, 2017
Tweet
Share
More Decks by Ren Kimura
See All by Ren Kimura
Ideas for defeating Anti-Deep-Fakes
rkx1209
0
51
セキュリティベンチャーのリスク管理
rkx1209
0
94
ファジング+トリアージ技術を用いた脆弱性解析自動化
rkx1209
0
98
Introduction to Fuzzing
rkx1209
6
4.2k
ARM TrustZone エクスプロイト入門
rkx1209
7
8.1k
The Game is Over. Nintendo switch has been totally compromised
rkx1209
9
5.1k
More efficient remote debugging with Thin Hypervisor
rkx1209
3
2.5k
Reverse Debugging with radare2
rkx1209
6
1.9k
カーネルエクスプロイトによるシステム権限奪取
rkx1209
13
7.8k
Other Decks in Programming
See All in Programming
既存デザインを変更せずにタップ領域を広げる方法
tahia910
1
240
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
230
AWS CDKの推しポイント 〜CloudFormationと比較してみた〜
akihisaikeda
3
320
Benchmark
sysong
0
280
関数型まつりレポート for JuliaTokai #22
antimon2
0
160
イベントストーミング図からコードへの変換手順 / Procedure for Converting Event Storming Diagrams to Code
nrslib
1
530
明示と暗黙 ー PHPとGoの インターフェイスの違いを知る
shimabox
2
380
アンドパッドの Go 勉強会「 gopher 会」とその内容の紹介
andpad
0
280
Result型で“失敗”を型にするPHPコードの書き方
kajitack
4
530
NPOでのDevinの活用
codeforeveryone
0
460
VS Code Update for GitHub Copilot
74th
1
480
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
2
310
Featured
See All Featured
Thoughts on Productivity
jonyablonski
69
4.7k
Writing Fast Ruby
sferik
628
62k
Embracing the Ebb and Flow
colly
86
4.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
GitHub's CSS Performance
jonrohan
1031
460k
Practical Orchestrator
shlominoach
188
11k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Balancing Empowerment & Direction
lara
1
380
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
How to train your dragon (web standard)
notwaldorf
94
6.1k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Transcript
インサイド 関西
自己紹介 • るくす • 神戸大学大学院 • 興味 • 専門分野 ローラー
最近はチャージャーも勉強中
• 任天堂より 年 月 日に発売されたゲーム機 • 初期は というコードネームで開発が進められていた • 本体の左右両側に
を接続、分離して遊べる • ジャイロセンサーやタッチスクリーンも搭載 • ドックを使うとテレビへの出力も
Type CPU Cortex-A57 Memory 4GB GPU 256-core Maxwell Storage Toshiba/Samsung
32GB eMMC Wifi/BT Broadcom BCM4356XKUBG
• は の を した物。マイクロカーネル。 ◦ ではないので注意 の情報は間違ってます • ブラウザは
ベース に使用 • 実行バイナリフォーマットも独自の を採用 • アプリはロード後 と呼ばれるダイナミックリンカに よってアドレス再配置、及び のような初期化処理を行う。
バイナリフォーマット • の独自実行バイナリフォーマット • ゲームやアプリはこのフォーマット .text section ※各セクション本体は で圧縮されている パッキング
バイナリフォーマット • 独自の動的リンクライブラリフォーマット の 、 の • 署名された正規の のみロード可能 署名の検証は
フォーマットを利 用
バイナリフォーマット • や 内に埋め込まれているフォーマット • 動的リンクに必要な情報を管理する専用領域 Header(NRO) .text .rodata .data
Header(MOD) Module Objects... .dynamic unwind NRO Binary
ソフトウェア • という海外のチームが アプリケーション開発用 の簡単なライブラリとエミュレータを公開 • をポーティング ◦ 個のシステムコールを実装しただけのプロトタイプ •
エミュレータは をベースとした簡易な物 ◦ のフック機能を使って、システムコール発行等のイベントをキャッチして ログに出力するだけ。どちらかというと解析用途。 ReSwitched Team
解析ツール • 実行バイナリ解析、変換ツール ◦ 用の 実行バイナリを に変換するツール • 逆アセンブラ •
逆アセンブラ NRO support by @pancake NSO support by @RKX1209
None
セキュリティ事情 • チームが エクスプロイトを公開 ◦ 元々 氏がデモしていた物を として更に発展 • カーネルエクスプロイト
◦ 氏が 週間前に成功 技術的な詳細は不明 ◦ デバッグ用のシステムコール発掘に成功し、デバッガの開発まで行っている • 任天堂の公式情報によると、 の を利用している ◦ 暗号化や署名検証等の な処理は で実行されている可能 性
セキュリティ事情
エミュレータ • 現在 エミュレータ、 を開発中 ◦ 現段階で公になっている エミュレータはまだ無い • 進捗状況
ローダー完成。 エミュレータ を開発中 • 基本的なエミュレーション方式は エミュレータの を参考 • バイナリから への 変換方式 • 勿論、法的にグレーな怪しい機能は実装しない
None
今後の課題 • エミュレーション方式の検討と実装 ◦ フォワーディング フルエミュレーション パススルー? • その他周辺機器のエミュレーション •
デバッガ等の開発環境の整備 これにはカーネルエクスプロイトによるハックが必 要 • をやめる