Suche senden
Hochladen
セキュアVMの構築 (IntelとAMDの比較、あともうひとつ...) - AVTokyo 2009
•
5 gefällt mir
•
4,466 views
Tsukasa Oi
Folgen
Technologie
Melden
Teilen
Melden
Teilen
1 von 27
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
WALをバックアップとレプリケーションに使う方法
WALをバックアップとレプリケーションに使う方法
Takashi Hoshino
関西オープンソース 2008 30days Albumの裏側
関西オープンソース 2008 30days Albumの裏側
Gosuke Miyashita
YAPC Asia 2010 30days Albumの裏側 後日談
YAPC Asia 2010 30days Albumの裏側 後日談
Kensuke Nagae
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
Taisuke Yamada
リアルタイムOsのカスタマイズ
リアルタイムOsのカスタマイズ
Kazuhiro Takahashi
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
Shigeru Hanada
Glibc malloc internal
Glibc malloc internal
Motohiro KOSAKI
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
Takatoshi Matsuo
Weitere ähnliche Inhalte
Was ist angesagt?
BLS署名の実装とその応用
BLS署名の実装とその応用
MITSUNARI Shigeo
clu2cは64ビットOSでも使えます (OSC 2012 Hiroshima LT用資料)
clu2cは64ビットOSでも使えます (OSC 2012 Hiroshima LT用資料)
洋史 東平
Intel TSX HLE を触ってみた x86opti
Intel TSX HLE を触ってみた x86opti
Takashi Hoshino
Redisととあるシステム
Redisととあるシステム
Takehiro Torigaki
あるコンテキストスイッチの話
あるコンテキストスイッチの話
nullnilaki
Winodws7のruby2でrails4を遊ぶ環境を作るのだ。
Winodws7のruby2でrails4を遊ぶ環境を作るのだ。
Yukio Saito
Redis速習会@Wantedly
Redis速習会@Wantedly
Yoshinori Kawasaki
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
Uptime Technologies LLC (JP)
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門
sandai
続・SECDマシン
続・SECDマシン
t-sin
PSoC4 ことはじめ -BLE版-
PSoC4 ことはじめ -BLE版-
Tetsuya Noguchi
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
Shigeru Hanada
Solaris Container
Solaris Container
Fumikazu FUJIWARA
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
sandai
Lagopus performance
Lagopus performance
Masaru Oki
Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4
ichikaway
リアルタイムOSの必要性とTOPPERS/SSPの紹介
リアルタイムOSの必要性とTOPPERS/SSPの紹介
NSaitoNmiri
about Tcpreplay
about Tcpreplay
@ otsuka752
Postgres Toolkitのご紹介
Postgres Toolkitのご紹介
Uptime Technologies LLC (JP)
PostgreSQL安定運用のコツ2009 @hbstudy#5
PostgreSQL安定運用のコツ2009 @hbstudy#5
Uptime Technologies LLC (JP)
Was ist angesagt?
(20)
BLS署名の実装とその応用
BLS署名の実装とその応用
clu2cは64ビットOSでも使えます (OSC 2012 Hiroshima LT用資料)
clu2cは64ビットOSでも使えます (OSC 2012 Hiroshima LT用資料)
Intel TSX HLE を触ってみた x86opti
Intel TSX HLE を触ってみた x86opti
Redisととあるシステム
Redisととあるシステム
あるコンテキストスイッチの話
あるコンテキストスイッチの話
Winodws7のruby2でrails4を遊ぶ環境を作るのだ。
Winodws7のruby2でrails4を遊ぶ環境を作るのだ。
Redis速習会@Wantedly
Redis速習会@Wantedly
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門
続・SECDマシン
続・SECDマシン
PSoC4 ことはじめ -BLE版-
PSoC4 ことはじめ -BLE版-
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
Solaris Container
Solaris Container
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
Lagopus performance
Lagopus performance
Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4
リアルタイムOSの必要性とTOPPERS/SSPの紹介
リアルタイムOSの必要性とTOPPERS/SSPの紹介
about Tcpreplay
about Tcpreplay
Postgres Toolkitのご紹介
Postgres Toolkitのご紹介
PostgreSQL安定運用のコツ2009 @hbstudy#5
PostgreSQL安定運用のコツ2009 @hbstudy#5
Andere mochten auch
Windows をより安全にする SafeSEH on MinGW
Windows をより安全にする SafeSEH on MinGW
Tsukasa Oi
さらば、Stagefright 脆弱性
さらば、Stagefright 脆弱性
Tsukasa Oi
ステルスルートキット : 悪いヤツはどうライブメモリフォレンジックをすり抜ける? - PacSec 2009
ステルスルートキット : 悪いヤツはどうライブメモリフォレンジックをすり抜ける? - PacSec 2009
Tsukasa Oi
システムレジスタの不足と2つのシンプルなアンチフォレンジック攻撃 - AVTokyo 2009
システムレジスタの不足と2つのシンプルなアンチフォレンジック攻撃 - AVTokyo 2009
Tsukasa Oi
Hmcomm Inc,
Hmcomm Inc,
Hmcomm Inc,
Donuts プロコンチャレンジ2014
Donuts プロコンチャレンジ2014
kuno4n
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
Tsukasa Oi
Linuxセキュリティ強化エッセンシャル
Linuxセキュリティ強化エッセンシャル
Toshiharu Harada, Ph.D
【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!
【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!
Masaya Fujita
スキマトークご利用ガイド
スキマトークご利用ガイド
SkimaTalk
オブジェクト指向っぽい話
オブジェクト指向っぽい話
Tomohiro Shinden
フリーソフトではじめるChIP-seq解析_第40回勉強会資料
フリーソフトではじめるChIP-seq解析_第40回勉強会資料
Amelieff
Ipsj77フォレンジック研究動向
Ipsj77フォレンジック研究動向
UEHARA, Tetsutaro
音声認識の基礎
音声認識の基礎
Akinori Ito
ドコモの取り組みを事例としたクラウドとAi
ドコモの取り組みを事例としたクラウドとAi
Osaka University
Andere mochten auch
(15)
Windows をより安全にする SafeSEH on MinGW
Windows をより安全にする SafeSEH on MinGW
さらば、Stagefright 脆弱性
さらば、Stagefright 脆弱性
ステルスルートキット : 悪いヤツはどうライブメモリフォレンジックをすり抜ける? - PacSec 2009
ステルスルートキット : 悪いヤツはどうライブメモリフォレンジックをすり抜ける? - PacSec 2009
システムレジスタの不足と2つのシンプルなアンチフォレンジック攻撃 - AVTokyo 2009
システムレジスタの不足と2つのシンプルなアンチフォレンジック攻撃 - AVTokyo 2009
Hmcomm Inc,
Hmcomm Inc,
Donuts プロコンチャレンジ2014
Donuts プロコンチャレンジ2014
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
Linuxセキュリティ強化エッセンシャル
Linuxセキュリティ強化エッセンシャル
【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!
【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!
スキマトークご利用ガイド
スキマトークご利用ガイド
オブジェクト指向っぽい話
オブジェクト指向っぽい話
フリーソフトではじめるChIP-seq解析_第40回勉強会資料
フリーソフトではじめるChIP-seq解析_第40回勉強会資料
Ipsj77フォレンジック研究動向
Ipsj77フォレンジック研究動向
音声認識の基礎
音声認識の基礎
ドコモの取り組みを事例としたクラウドとAi
ドコモの取り組みを事例としたクラウドとAi
Ähnlich wie セキュアVMの構築 (IntelとAMDの比較、あともうひとつ...) - AVTokyo 2009
PFI Seminar 2010/02/18
PFI Seminar 2010/02/18
Preferred Networks
V6 unix in okinawa
V6 unix in okinawa
magoroku Yamamoto
nftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in Linux
Tomofumi Hayashi
InfiniBand on Debian
InfiniBand on Debian
Taisuke Yamada
Riak / Riak-CS(Enterprise版) ベンチマークしました
Riak / Riak-CS(Enterprise版) ベンチマークしました
Takashi Sogabe
ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜
Taro Matsuzawa
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
信之 岩永
d-kami x86-1
d-kami x86-1
Daisuke Kamikawa
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Takeshi Yamamuro
Tokyo.R#16 wdkz
Tokyo.R#16 wdkz
Kazuya Wada
osoljp 2011.08
osoljp 2011.08
@ otsuka752
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
Masahiko Sawada
[C31]世界最速カラムナーDBは本物だ! by Daisuke Hirama
[C31]世界最速カラムナーDBは本物だ! by Daisuke Hirama
Insight Technology, Inc.
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…
Yasumasa Suenaga
Gpgpu tomoaki-fp16
Gpgpu tomoaki-fp16
tomoaki0705
LTO/オートローダー/仮想テープライブラリの基礎知識
LTO/オートローダー/仮想テープライブラリの基礎知識
MKT International Inc.
TripleOの光と闇
TripleOの光と闇
Manabu Ori
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
YusukeKuramata
d-kami x86-2
d-kami x86-2
Daisuke Kamikawa
2011/06/11 #sfstudy ECCの遊び方。
2011/06/11 #sfstudy ECCの遊び方。
Minato Kirino
Ähnlich wie セキュアVMの構築 (IntelとAMDの比較、あともうひとつ...) - AVTokyo 2009
(20)
PFI Seminar 2010/02/18
PFI Seminar 2010/02/18
V6 unix in okinawa
V6 unix in okinawa
nftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in Linux
InfiniBand on Debian
InfiniBand on Debian
Riak / Riak-CS(Enterprise版) ベンチマークしました
Riak / Riak-CS(Enterprise版) ベンチマークしました
ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
d-kami x86-1
d-kami x86-1
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Tokyo.R#16 wdkz
Tokyo.R#16 wdkz
osoljp 2011.08
osoljp 2011.08
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
[C31]世界最速カラムナーDBは本物だ! by Daisuke Hirama
[C31]世界最速カラムナーDBは本物だ! by Daisuke Hirama
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…
Gpgpu tomoaki-fp16
Gpgpu tomoaki-fp16
LTO/オートローダー/仮想テープライブラリの基礎知識
LTO/オートローダー/仮想テープライブラリの基礎知識
TripleOの光と闇
TripleOの光と闇
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
d-kami x86-2
d-kami x86-2
2011/06/11 #sfstudy ECCの遊び方。
2011/06/11 #sfstudy ECCの遊び方。
Kürzlich hochgeladen
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
Tetsuya Nihonmatsu
2024 04 minnanoito
2024 04 minnanoito
arts yokohama
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
ssuser539845
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
ssuser370dd7
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
Ayachika Kitazaki
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
arts yokohama
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
arts yokohama
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
Shumpei Kishi
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
Matsushita Laboratory
2024 03 CTEA
2024 03 CTEA
arts yokohama
Kürzlich hochgeladen
(11)
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
2024 04 minnanoito
2024 04 minnanoito
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
2024 03 CTEA
2024 03 CTEA
セキュアVMの構築 (IntelとAMDの比較、あともうひとつ...) - AVTokyo 2009
1.
セキュゕVMの構築 Intel と AMD
の比較、あともうひとつ… Tsukasa Ooi <li@livegrid.org> Livegrid Incorporated, Lead Analyst
2.
関連する事項 • 仮想化 • ふるまいベースのマルウェゕ検出 •
リバースエンジニゕリング
3.
セキュゕVM とは? • “セキュリテゖ拡張されたVM”
のほうが正しいかも… • セキュリテゖ拡張された機能 – 不可視のブレークポント – 直接のメモリ参照/改変 – システム I/O の監視 – 命令/メモリトレース • これらはセキュリテゖ目的に有用である! – メモリ参照による rootkit の検出 – システム I/O の監視によるマルウェゕの検出
4.
どう仮想マシンを “保護” するか? •
(CPU の仮想化支援機能がある場合) おおまかに言えば 2 つの方法がある。 • デバッグレジスタを使う (DR0~DR7) – DR7.GD bit : DRx レジスタにゕクセスできなくなる – DRx ゕクセス時の VM exit : 読み書きを監視できる • ページテーブル改変を使う – PTE.R/W bit : ページ書き込みを監視できる – PTE.P bit : ページへの全てのゕクセスを監視できる – PTE.NX bit : ページの実行ゕクセスを監視できる
5.
ブレークポントの設定 (Debug Registers) •
VM exit を次のゕクセス時に設定する: – DRx へのゕクセス – #DB (デバッグ) 例外の発生 • ゲストの DR7.GD bit をオンにする • ゲストのデバッグレジスタを用いてBPを設定 – カーネル関数やシステムコールに設定するのが有用 • ブレークポントがヒットした場合… – 追加の処理を行う
6.
ブレークポントの設定 (Page Table) •
VM exit を次のゕクセス時に設定する: – #PF (ページフォルト) 例外 • ページの PTE.P bit か PTE.NX bit を 0 にする – ゲストのページテーブルを変更せず、Shadowを変更する • ページフォルトが起こった場合: – ブレークポントがヒットしたかチェックする (false-positive が考えられるため) – ブレークポントがヒットしているなら、追加の処理を行う
7.
比較 (Debug Registers
/ Page Table) • デバッグレジスタの使用はシンプルである – 実装も簡単。 • ページテーブル改変は5つ以上のBPをセットできる – デバッグレジスタを使用するだけでは 4 つに制限される – もしゲストがデバッグレジスタを使用するなら、 その動作をページテーブル改変でエミュレート しなければならない • デバッグレジスタの使用は高速である – オーバーヘッド低, 別箇所における false-positive 無し • ページテーブル改変は柔軟である – 使い方次第で何でも監視できる
8.
CPU による仮想化支援機能の考察 • いくつかの重要な命令をフックできない
– sysenter, sysexit など • バナリ変換と比べると制限された監視手法
9.
AMD-V/Intel VT-x の比較 •
AMD-V だけが IRET 命令をフックできる – ゲスト OS は EFLAGS.RF フラグをオンにして IRET 命令を実行することで、ホストのBPを回避できる (EFLAGS.RF : 次の 1 命令だけ BP のヒットを抑制する) • デバッグレジスタを使うなら、AMD が better – ページテーブル改変を使う場合、何の機能差もない – Intel でも、システムコールを監視するような場合は 十分 (IRET 命令で呼ばれることがほぼ無い)
10.
Second Level Address
Translation (SLAT) • 仮想化における新しい機能 • ゕドレス変換において 2 つのページテーブルを使用 – Guest Logical Addr → Guest Physical Addr – Guest Physical Addr → Host Physical Addr • Intel と AMD の双方が SLAT 拡張を実装している – Intel : Extended Page Tables (EPT) – AMD : Nested Paging / Rapid virtualization index (RVI) • しかしこれらには問題がある…
11.
SLAT に関する考察 • さらに限定される監視手法
– ゲスト OS の “本当の” ページテーブルが可視である – 2 つのページテーブルの参照は、(一部の) セキュリテゖ目的においては悪いことである – 最悪の場合、SLAT 機能を有効にできない! • デバッグレジスタはまだ使用できる
12.
SLAT の機能差については? • Intel
EPT においてはページを “実行専用” にできる – CPU によってサポートされていれば… • 今のところ、Intel EPT をサポートしている全ての CPU で この “実行専用” ページが使用可能 – ステルス性は十分ではないが、ほぼ不可視の コード領域を作り、そこを実行できる – ただしゲスト OS もその部分を jump 系命令で 実行可能であることに気をつけよ • ほとんど同じだが、敢えて挙げるなら Intel
13.
THANK YOU?
14.
あともう 1 つ X86_64
ゕーキテクチャにおける X86 CPU の完全仮想化
15.
x86_64 での x86
エミュレーション • もちろんバナリ変換を使う… • これらは可能な上に、ほとんど実用的!
16.
なぜ “x86 on
x86_64”? • ゕーキテクチャがとても似ている – 通常の x86 命令なら、x86_64 でも最大 2 命令で エミュレートすることができる • 追加メモリが存在する – x86 をエミュレートするには 44GB のゕドレス空間が必要 だが、x86_64 においては全く問題のない量である • 追加レジスタがある! – 追加された 8 つのレジスタを、コンテキストなどを 保存するために使用することができる!
17.
どう x86 を
“emulate” する? (1) PUSH EBP MOV EBP, ESP MOV EAX, [EBP+8] MOV EDX, [EBP+12] MOV EAX, [EAX*4+EDX] POP EBP RET
18.
どう x86 を
“emulate” する? (1) PUSH EBP MOV [RCX+RBP-4], EBX LEA EBP, [EBP-4] MOV EBP, ESP MOV EBX, EBP MOV EAX, [EBP+8] MOV EAX, [RCX+RBX+8] MOV EDX, [EBP+12] MOV EDX, [RCX+RBX+12] MOV EAX, [EAX*4+EDX] LEA R14D, [EAX*4+EDX] MOV EAX, [RCX+R14] POP EBP MOV EBX, [RCX+RBP] LEA EBP, [EBP+4] RET (Return Intrinsics)
19.
どう x86 を
“emulate” する? (2) • レジスタの再割り当て – ESP → EBP/RBP (x86_64 ではスタックが 8 バト単位である) – EBP → EBX/RBX (スタック参照のロスを減らす) • RCX : 32 ビット仮想ゕドレス空間のベース – 全ての仮想ゕドレス! • R14/R14D : 一時レジスタ (例ではゕドレス計算に使用) • R15 : エミュレーションシステムで予約
20.
バナリ変換を使って… • x86 のメモリ/命令完全トレース
– 全ての実行パス – メモリ read/write – I/O 処理 • オーバーヘッドは高いが、やる価値はある
21.
何のために? • “干渉” を検出する
– 脆弱性の利用 – フック – (テーブルやメモリ構造体の) 改変 • リバースエンジニゕリング – “全て” をトレースできる! • ゕンチリバースエンジニゕリングさえも検出可能 – プロトコル解析 (ネットワーク, フゔル…) – ゕルゴリズム解析および検索 • ゕルゴリズムの検索は Anti-DRM に有用かも
22.
どう x86 をトレースつきで
“emulate” する? (1) PUSH EBP MOV [RCX+RBP-4], EBX LEA EBP, [EBP-4] MOV EBP, ESP MOV EBX, EBP MOV EAX, [EBP+8] MOV EAX, [RCX+RBX+8] MOV [R13], EAX LEA R13, [R13+4] MOV EDX, [EBP+12] MOV EDX, [RCX+RBX+12] MOV [R13], EDX LEA R13, [R13+4] MOV EAX, [EAX*4+EDX] LEA R14D, [EAX*4+EDX] MOV EAX, [RCX+R14] MOV [R13], EAX LEA R13, [R13+4] POP EBP MOV EBX, [RCX+RBP] MOV [R13], EBX LEA R13, [R13+4] LEA EBP, [EBP+4] RET (Return Intrinsics)
23.
どう x86 をトレースつきで
“emulate” する? (2) • R13 : トレースを出力するゕドレス – メモリ読み取りの結果 – 分岐先の命令 (EIP) – これだけをトレースすることで、全てが判明する! • 通常の x86 命令を実行するために、 x86_64 においては 1~5 命令を実行する – バナリ変換プログラムが最適化されれば、 もっと効率が上がる!
24.
実用的なのか? • そこそこ。 –
デゖスク書き込みのストール抜きでのパフォーマンス指標: Pentium 4 1.5GHz ≧ エミュレーション中の Core i7 3.0GHz > Pentium III 1.0GHz • システムエミュレーションには十分ではないが、 ユーザモードエミュレーションには十分である! • 他のどのトレース手法よりも高速 (トレース機能つきのデバッガなど…)
25.
制約 / 考察 •
x86 セグメンテーションとゕドレッシング – x86_64 は “フラットメモリモデル” に制約されている – セグメントのリミットを模倣するには多大な計算量が必要 • 超高速なデゖスクが必要 – 幸いにも書き込みは “シーケンシャル” なので、 HDD を使った RAID-0 が有用かも • 大量のリソースを必要とする – 特に主記憶容量について顕著
26.
いつ使用可能になる? • 今のところ、実験的なプログラムが動作するのみ。 –
実用的プログラムをエミュレートするには 至っていない • 2010 年前半までには公開できれば…
27.
何か質問は? THANK YOU.
Jetzt herunterladen