Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Kernel/VM #14 発表資料
Search
orumin
July 21, 2018
Technology
660
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kernel/VM #14 発表資料
orumin
July 21, 2018
More Decks by orumin
See All by orumin
あのころの iPod を どうにか再生させたい
orumin
2
3k
ヴィンテージマシンと付き合う - kernel/vm online 5
orumin
0
1.3k
むかしの RISC、むかしの Unix
orumin
7
3.9k
Fundamental of architecture to implementing OS on AArch64
orumin
3
5.8k
Kernel/VM Kansai #9
orumin
0
1k
Unikernels report
orumin
2
550
第13回Kernel/VM勉強会発表資料
orumin
1
1.7k
第12回カーネル/VM探検隊
orumin
0
410
第11回 Kernel/VM探検隊 発表資料
orumin
1
620
Other Decks in Technology
See All in Technology
AI秘書と毎日働くのはもう当たり前。開発以外の業務に足りない機能をどう埋める?
minorun365
PRO
4
2.2k
推論基盤と Scale-Up Interconnect の現状と制約から俯瞰する技術動向
markunet
2
760
渡米前の準備を制す!re:Invent 2026徹底準備術 / The Ultimate Preparation Guide for re:Invent 2026
yuj1osm
1
510
ALBのLCU予約とトラフィックの波によるプロダクト理解 / Understanding ALB LCU and Traffic Spikes
mito201
1
140
詳解 never 型 - ボトム型の性質を深掘り
nealle
0
140
AIに任せられるFlutterコードベースを作る 〜仕様をコードで表し、ハーネスで守る〜
myohei
1
630
reInvent2026stby LT00 "Change your life!"
shinichirokawano
1
540
AI Search (Foundry IQ) におけるRAGデータの準備と配置
ryomaru0825
1
140
Patterns in AI Driven Software Development
akosma
PRO
0
450
書き手が人でもAIでも正しくなる道、SREを埋め込んだDeveloper Platform / tech drivers day8
chmikata
4
900
AI時代の開発はウォーターフォールに回帰する? / development-with-ai-back-to-wf
okamototakuyasr2
0
170
eBPF 簡介 2026 版
shunghsiyu
0
160
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.3k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
330
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
The untapped power of vector embeddings
frankvandijk
2
2k
Claude Code のすすめ
schroneko
67
230k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
890
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
440
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
60k
Facilitating Awesome Meetings
lara
57
7.2k
Evolving SEO for Evolving Search Engines
ryanjones
0
350
Transcript
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 1/27 Programming on PS4 Programming
on PS4 orumin (@kotatsu_mi) 1
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 2/27 2
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 3/27 PS4 での任意コード実⾏ PS4 での任意コード実⾏
WebKit の脆弱性と BadIRET と呼ばれる脆弱性を突かれていた 前回の Kernel/VM での RKX1209 ⽒の発表 任意コードが実⾏されるように https://speakerdeck.com/rkx1209/hell-on-sony-snatch-the-kernel- privilage-from-browser 3
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 4/27 PS4 ハックの現状 PS4 ハックの現状
時代は進んだ FW 5.05 まで homebrew が使える exploit が公開 4.05 ,4.55 ,5.05 向けに kernel exploit が公表済み 4.55 も 5.05 も BPF の race condition を突くもの OpenOrbis team が Mira project 進⾏中(フレームワー ク) 4
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 5/27 PS4 でこんなことまで…… PS4 でこんなことまで……
5
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 6/27 今回のお題:PS4 でコードを動かそう 今回のお題:PS4 でコードを動かそう
脆弱性については が詳しい どうやって動かすかももちろん⾯⽩いですが 何かを動かすこと⾃体も⾯⽩いですよね 実際にコードを動かしてみよう https://github.com/Cryptogenic/Exploit-Writeups 6
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 7/27 PS4 でコードを動かすには PS4 でコードを動かすには
1. PS4 で exploit と payload を実⾏する WebKit 上で exploit を実⾏し外部から payload のバイナリを注⼊ (主に TCP/IP 経由) 画⾯描画は canvas を乗っ取って描画するなど制約あり 環境構築やコードの記述はラク 2. PS4 のアプリケーションとして実⾏する 上記制約がない やや準備がめんどい 7
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 8/27 PS4 “payload” SDK PS4
“payload” SDK 今回はこちらの使い⽅に触れません サークル「らぼちっく;げーと」にこっちを触ったときの話を寄 稿しました コミックマーケット C94 で頒布されると思います 8
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 9/27 psxdev PS4 SDK psxdev
PS4 SDK 今回はこちらについて Hitodama あるいは psxdev と名乗る⼈物が作 成 fMSX の移植版の作成実績アリ 最近 FW 5.05 にも対応 9
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 10/27 PS4 Hardware PS4 Hardware
PS4 Sony のゲームコンソール AMD の Jaguar ベースの APU を搭載 つまり x86_64 ですね メインメモリが GDDR5 な 8GB のメモリ CPU と GPU を接続する onion バスが拡張されているらし い 10
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 11/27 PS4 So ware PS4
So ware PS4 はコアをひとつ占有し動作する OS があ る 名は Orbis OS FreeBSD 9.0 の fork libc も system call も使える ツールチェーンには LLVM/Clang が採⽤ 11
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 12/27 Sony Executable Sony Executable
PS2 も PS3 も PSP も PS Vita も ELF を使っている ファームウェアでのライブラリとしては prx という形式にしたも のを使っていた PS3 や PS Vita では さすがに署名したり暗号化したりしている SELF … Signed Executable and Linkable Format SPRX … Signed PPU Relocatable Executable アプリのメタデータとして SFO という形式のバイナリ これらをアーカイブにした EBOOT.PBP (PSP のみ)や pkg 12
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 13/27 PS4 Executable PS4 Executable
やっぱり SELF やっぱり SFO やっぱり pkg 13
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 14/27 PS4 Homebrew PS4 Homebrew
OS が Unix 系なのもあって普通に GCC や Clang でイケる libc や Sony 独⾃の API は sprx をロードすれば叩ける sprx をロードしたり API のプロトタイプ宣⾔を⽤意したりする SDK …… もうあったー! 14
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 15/27 環境構築 環境構築 README どおりにやればおおむね⼤丈夫
ただし macOS 前提…… しかもやや⼿順が抜けていておかしい 次から環境構築⼿順の正確なものを記載します もしかしたら後で README に pull-req 出すかも https://github.com/psxdev/ps4sdk/tree/firmware505 15
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 16/27 環境構築 - LLVM のビルド
環境構築 - LLVM のビルド export PS4DEV=/usr/local/orbisdev mkdir -p $PS4DEV/git/crossllvm && cd $PS4DEV/git/crossllvm git clone https://llvm.org/git/llvm.git cd llvm/tools git clone https://llvm.org/git/clang.git git clone https://llvm.org/git/lld.git cd ../projects git clone https://llvm.org/git/compiler-rt.git cd ../.. mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/orbisdev/toolcha -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-scei-ps4 \ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \ -DCOMPILER_RT_BUILD_BUILTINS:BOOL=OFF -DCOMPILER_RT_BUILD_SANITIZERS:BOOL=OFF -DCOMPILER_RT_CAN_EXECUTE_TESTS:BOOL=OFF -DCOMPILER_RT_INCLUDE_TESTS:BOOL=OFF 16
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 17/27 環境構築 - binutils のビルド
環境構築 - binutils のビルド cd $PS4DEV/git git clone git://sourceware.org/git/binutils-gdb.git binutils cd binutils ./configure --prefix="$PS4DEV/host-osx" --target="x86_64-pc-freebsd9" \ --disable-nls \ --disable-dependency-tracking \ --disable-werror \ --enable-ld \ --enable-lto \ --enable-plugins \ --enable-poison-system-directories make -j4 make install 17
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 18/27 環境構築 - PS4SDK のビルドと設定
環境構築 - PS4SDK のビルドと設定 export PS4SDK=$PS4DEV/git/ps4sdk export PATH=$PS4DEV/host-osx/x86_64-pc-freebsd9/bin:$PS4DEV/toolchain/bin:$PATH cd $PS4DEV/host-osx/x86_64-pc-freebsd9/bin ln -s ld orbis-ld cd $PS4DEV/git git clone -b firmware505 https://github.com/psxdev/ps4sdk cd ps4sdk make -j4 ln -s $PS4SDK/include $PS4DEV ln -s $PS4SDK/lib $PS4DEV ln -s $PS4SDK/make $PS4DEV ln -s $PS4SDK/crt0.s $PS4DEV ln -s $PS4SDK/linker.x $PS4DEV 18
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 19/27 環境構築 - liborbis のビルドと設定
環境構築 - liborbis のビルドと設定 こちらの README の⼿順は正確なのでこの通りにするだ け liborbis は正確には絶対必要ではないのですがあると便利 2D ゲーム向けの関数群やゲームパッド⼊⼒の受付 libz や libpng の移植 とくに elf-loader や ps4link はあると便利 https://github.com/orbisdev/liborbis 19
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 20/27 GNM と GNMX GNM
と GNMX PS4 で導⼊されているグラフィックス API GNM が低レベル,GNMX が⾼レベルの API GNM の API の例 https://github.com/ps4dev/libSceGnmDriver/blob/master/include/gnm_d 20
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 21/27 GNM GNM #pragma once
#include <stdint.h> #include <inttypes.h> /* unreversed */ int64_t sceGnmAddEqEvent(); int64_t sceGnmAreSubmitsAllowed(); int64_t sceGnmDebugHardwareStatus(); int64_t sceGnmDeleteEqEvent(); int64_t sceGnmDingDong(); int64_t sceGnmDisableMipStatsReport(); int64_t sceGnmDispatchInitDefaultHardwareState(); int64_t sceGnmDrawInitDefaultHardwareState(); 21
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 22/27 orbis2d orbis2d PS4SDK といっしょにビルドした
liborbis に含まれるツー ル GNM の wrapper になっているっぽい updateController(); orbis2dStartDrawing(); orbis2dDrawRectColor(x,w,y,h,color); orbis2dClearBuffer(0); // flush and flip orbis2dFinishDrawing(flipArg); // swap buffers orbis2dSwapBuffers(); flipArg++; 22
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 23/27 homebrew homebrew 23
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 24/27 ハマりポイント ハマりポイント TCP/IP 経由で
elf を投げつけたら elf をロードする elf-loader が既に ある デバッグに便利 Firmware 5.05 の⼿元の環境では動かない…… ELF を pkg にして PS4 にインストールしよう! PS2 や PS4 のゲームバックアップのツール情報ばかり出てくる ⼀応不可能ではない(pkg 化された homebrew も存在する) 調べて pkg 作ろうとしましたがまだ出来てません…… 24
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 25/27 さらに・ハマりポイント さらに・ハマりポイント いっそあきらめて “payload”
SDK でデモをしようとした サンプルコードにある canvas を乗っ取って描画する⽅法 サンプルコードは Firmware 1.76 前提 ⼿元だと page fault でフレームバッファに値を書き込めな い…… 1px も書き込めませんでした 25
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 26/27 ダメ押し・ハマりポイント ダメ押し・ハマりポイント いろいろデバッグ情報とれないか試していた 試しに
IDU mode (PS Vita や PS4 に搭載される試遊台モード)にし てみた 元のユーザーが消されて User1 と User2 が作成される さよならセーブデータ\(^o^) / 26
7/21/2018 Programming on PS4 file:///home/orumin/Nextcloud/slides/kernelvm/kernelvm-14/slides.html?print-pdf#/ 27/27 まとめ まとめ PS4 の
homebrew はわりと作りやすい Unity で出⼒したやつも homebrew として起動できるという噂も みんなやってみよう でもやるなら FW 1.76 の古いマシンがいいと思うよ exploit を実⾏したらすぐに FTP かなんかでセーブデータやトロ フィーバックアップしようね 27