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
SEGVなんてもういいですから
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ren Kimura
February 27, 2016
Technology
2.2k
1
Share
SEGVなんてもういいですから
OSC Tokyo Spring'16 Linux LT
Ren Kimura
February 27, 2016
More Decks by Ren Kimura
See All by Ren Kimura
脅威解析概論
rkx1209
0
210
Ideas for defeating Anti-Deep-Fakes
rkx1209
0
110
セキュリティベンチャーのリスク管理
rkx1209
0
160
ファジング+トリアージ技術を用いた脆弱性解析自動化
rkx1209
0
130
Introduction to Fuzzing
rkx1209
6
4.4k
ARM TrustZone エクスプロイト入門
rkx1209
7
8.6k
The Game is Over. Nintendo switch has been totally compromised
rkx1209
9
5.3k
インサイドNintendo Switch
rkx1209
18
13k
More efficient remote debugging with Thin Hypervisor
rkx1209
3
2.6k
Other Decks in Technology
See All in Technology
ZOZOTOWNリプレイスでのSkills導入までの流れとこれから
zozotech
PRO
4
3.2k
"まず試す"ためのDatabricks Apps活用法 / Databricks Apps for Early Experiments and Validation
nttcom
1
220
TanStack Start エコシステムの現在地 / TanStack Start Ecosystem 2026
iktakahiro
1
360
Autonomous Database - Dedicated 技術詳細 / adb-d_technical_detail_jp
oracle4engineer
PRO
5
13k
シン・リスコフの置換原則 〜現代風に考えるSOLIDの原則〜
jinwatanabe
0
160
New CBs New Challenges
ysuzuki
1
160
インフラを Excel 管理していた組織が 3 ヶ月で IaC 化されるまで
geekplus_tech
3
160
OpenClaw初心者向けセミナー / OpenClaw Beginner Seminar
cmhiranofumio
0
370
Babylon.js Japan Activities (2026/4)
limes2018
0
200
第26回FA設備技術勉強会 - Claude/Claude_codeでデータ分析 -
happysamurai294
0
400
MCPゲートウェイ MCPass の設計と実装 エンタープライズで AI を「運用できる」状態にする
mtpooh
1
210
プロダクトを育てるように生成AIによる開発プロセスを育てよう
kakehashi
PRO
1
890
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
YesSQL, Process and Tooling at Scale
rocio
174
15k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
330
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
310
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
GraphQLとの向き合い方2022年版
quramy
50
14k
HDC tutorial
michielstock
1
610
30 Presentation Tips
portentint
PRO
1
270
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
450
Utilizing Notion as your number one productivity tool
mfonobong
4
290
Transcript
SEGVなんてもういいですから OSC2016 Tokyo/Spring Linuxライトニングトーク @RKX1209
自己紹介 • るくすと申します • twitter:@RKX1209 • 神戸大学 工学部 B3 •
普段はセキュリティ - マルウェア解析,sandbox... • OS, VMMなど低レイヤーなもの好き
突然ですがみなさんはこんなコードを書いた 事がありますか?
None
実行結果 Segmentation fault (コアダンプ) 当たり前だよなぁ
なんとか実行させたい... なんとか実行させたくない? → よし SEGVを殺そうぜ!
Linuxカーネル SEGVをなくすには? → Linuxカーネルを弄るしか無い → SEGVを許してくれる仕組みを作ろうぜ! → 優しいOSの完成 → 平和の訪れ
不正アドレスの処理 1. 不正なアドレスへのアクセスが発生するとCPUが トラップ実行 2. Linuxがトラップを受けdo_page_faultを実行する 3. SEGVが発生したアドレスから、正常なページフォ ルトなのか、不正なアクセスなのか判断 4.
正常ならhandle_mm_faultでページフォルトを処 理 5. 不正ならSEGV発生
SEGVを殺す方法 ✔ 不正なアドレスでも正常な処理に飛ぶようにする ✔ 正常だと思ったLinuxはそのままページフォルトと して処理 ✔ 不正なアドレスにmmapで物理アドレスを割り当て る ✔
ぶっちゃけ仮想アドレスがどんな値 でも物理アドレスを割り当れば 何とかなる → バディシステムに圧倒的感謝
None
SEGVを殺す時の注意 • mmapで物理アドレスを割り当てる時do_mmapを 使ってはいけない → do_page_fault実行時はプロセスのとあるスピ ンロックを既に使用している → do_mmapはこのスピンロックが解法されるまで 待つため、デッドロックが発生する
• なのでスピンロックを使用しない do_mmap_pgoffを使いましょう
None
実行結果 a やったね (スクショ撮り忘れましたorz)
ご清聴有難うございました 実際のパッチや詳細な説明は http://rkx1209.hatenablog.com/entry/2015/12/06/ 213912