Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
1/116
バイナリアンを目指して
- For a binaryen -
兼澤 侑也 - Yuya Kanesawa -
2/116
Self-Introduction
• My name is Yuya Kanesawa.
• I’m second grader of University of Aizu.
• My hobby is Rubik’s Cube ...
3/116
Self-Introduction
• My name is Yuya Kanesawa.
• I’m second grader of University of Aizu.
• My hobby is Rubik’s Cube ...
4/116
5/116
Whooooooooooooo!!!!
ワ―――ヽ(・∀・)ノ―――イ
6/116
ゴゴゴゴゴゴゴゴ・・・・・・・
7/116
次はお前だ!!!!
8/116
本題に入ります
9/116
そもそもバイナリアンって?
10/116
11/116
12/116
なんでバイナリ?
• 大和セキュリティ場阿忍愚CTFに参加
• 金子さんから聞いた「千田さん」
• 2年生になってから
13/116
なんでバイナリ?
• 大和セキュリティ場阿忍愚CTFに参加
• 金子さんから聞いた「千田さん」
• 2年生になってから
14/116
15/116
なんでバイナリ?
• 大和セキュリティ場阿忍愚CTFに参加
• 金子さんから聞いた「千田さん」
• 2年生になってから
16/116
17/116
なんでバイナリ?
• 大和セキュリティ場阿忍愚CTFに参加
• 金子さんから聞いた「千田さん」
• 2年生になってから
18/116
↑の本や、Webサイトなどで
勉強していました
19/116
目的
• バイナリって難しそう・・・・
• バイナリってなにが面白いの・・・?
このような人達に
「バイナリって楽しいよ!」と伝えたい
もし興味を持って頂けたら
一緒にバイナリアンを目指しましょう
20/116
目次
• バイナリとは
• バイナリに触れてみる
• 実践編
21/116
目次
• バイナリとは
• バイナリに触れてみる
• 実践編
22/116
バイナリとは
• 「binary」とは「2進数の」という意味
• 0と1で表現されているデータ形式を「バイナ
リファイル」など
• 実行ファイル、音声ファイル、画像ファイルな
ども、バイナリファイル
• データ構造の2分木は、バイ...
23/116
バイナリとは
• バイナリファイルは「バイナリエディタ」などで
開く
• テキストエディタでは、ほぼ無理
24/116
バイナリとは
有名なバイナリエディタ
• Ollydbg, Bz, Stirling, hexedit, etc
↑OSに合わせて選択
25/116
バイナリとは
有名なバイナリエディタ
• Ollydbg, Bz, Stirling, hexedit, etc
↑OSに合わせて選択
実はVimやEmacsでも開ける
(Emacsは使わないので、以下Vimの手順)
• 「-b」...
26/116
Vimは今日使うので
この際、他のバイナリエディタも
見てみます
27/116
ファイルの先頭からの
アドレスを16進数で
表している
28/116
表示可能文字
ファイルの内容
29/116
Bzエディタは
このようなビットマップ表示で
きるのが便利だったりします
(実はVimでもできます)
30/116
「
熱
血
バ
イ
ナ
リ
ア
ン
十
訓
」よ
り
一
、
ま
ず
は
読
め
!
「熱血!アセンブラ入門」より引用
31/116
目次
• バイナリとは
• バイナリに触れてみる
• 実践編
32/116
バイナリに触れてみる
• ELFファイルのヘッダ(Hello World)が
どうなっているか見てみる ↓
/usr/include/elf.h
実行環境:Ubuntu15.04 64bit版
33/116
ELFファイルについて
• 「Executable and Linking Format」
• Linuxディストリビューションの多くで採用され
ている実行ファイルのこと
(WindowsでいうEXE的な)
• CTFなどでもほぼ...
34/116
ってことで今回は、
ELFがどういう構造をしているのか
見ていきたいと思います
35/116
ELFの構造
ELFヘッダ
プログラムヘッダ
・
・
・
・
・
・
・
・
・
・
・
・
・
・
セクションヘッダ
 ELFヘッダ
 プログラムヘッダ
 データ部分
 セクションヘッダ
主にこの4つで構成される
36/116
ELFの構造
ELFヘッダ
プログラムヘッダ
・
・
・
・
・
・
・
・
・
・
・
・
・
・
セクションヘッダ
ELFヘッダ
今回見ていくのは
この部分
37/116
ELFの構造
ELFヘッダ
プログラムヘッダ
・
・
・
・
・
・
・
・
・
・
・
・
・
・
セクションヘッダ
ELFヘッダ
今回見ていくのは
この部分
こっちは今回は
あまり触れません!
38/116
$ vim hello.c
Hello World を書く
39/116
40/116
$ gcc hello.c –o hello コンパイル
41/116
42/116
43/116
$readelf –h でELFヘッダの
情報は見ることができます
44/116
でも、なんでこうなるのか
知りたいですよね?
45/116
知りたいですよね!!???
46/116
$ vim /usr/include/elf.h
Vim で elf.h を開く
47/116
48/116
なるほど・・・・
49/116
「
熱
血
バ
イ
ナ
リ
ア
ン
十
訓
」よ
り
一
、
勘
で
読
め
!
「熱血!アセンブラ入門」より引用
50/116
なるほど!!!!
51/116
・Elf64_Half : 2バイト
・Elf64_Word : 4バイト
・Elf64_Addr : 8バイト
・Elf64_Off : 8バイト
52/116
Half * 8 = 16Byte
Word * 2 = 8Byte
Addr * 1 = 8Byte
Off * 2 = 16Byte
16 + 8 + 8 + 16 = 48
16Byte + 48Byteの
64Byteが
...
53/116
(余談ですが・・・)
じゃあ32bitのELFヘッダは
32Byte?
54/116
そう思った方は残念
55/116
実は52Byteだったりします
56/116
・マジックナンバーについて
(マジックナンバーとは、ファイルの
識別子として用いられるもの)
57/116
・マジックナンバーについて
(マジックナンバーとは、ファイルの
識別子として用いられるもの)
よくわかんないけど、
とにかくこれが
マジックナンバーだろう・・・
58/116
・マジックナンバーについて
(マジックナンバーとは、ファイルの
識別子として用いられるもの)
E: 16進数で45
L: 16進数で4c
F: 16進数で46
よって、ELFの
マジックナンバーは
「7f 45 4c 46」のはず
59/116
$ vim –b hello バイナリモード
$ :%!xxd 16進ダンプ
60/116
61/116
62/116
\(´∀`) /ワ-イ!!!
63/116
ってことで、どんどん見ていきましょう
64/116
65/116
ファイルのタイプ
を表している
・実行ファイルなら2
下の部分はアーキテクチャ
(どういった構成か)
実行環境より、x86-64なので、
どこかにないか見ていく
66/116
あっ、あった
x86-64なら62らしい
16進数にして、3e
67/116
よって、Hello Worldは実行ファイルなので
ファイルタイプの部分は 2
また、アーキテクチャはx86-64なので
3e になっているはず・・・
68/116
69/116
70/116
それぞれ、Elf64_Halfなので
ファイルタイプとアーキテクチャは
2Byteずつ
71/116
ん・・・?
72/116
ちゃんと2Byteずつ
02と3e入ってるけど
格納されてる順番
おかしくね・・・?
73/116
???「はっはっは!!!」
74/116
そ・・・その声は・・・!!
75/116
76/116
ここで出てくるバイトオーダの話
• ビッグエンディアンとリトルエンディアン
(リトルエンディアンってなんかカッコイイですよね)
要は、値をどういう順序で
メモリ上に格納するかということ
そのままの順序なら、ビッグエンディアン
逆順...
77/116
ここで出てくるバイトオーダの話
• ビッグエンディアン
人間にとってわかりやすい(そのままの順番の為)
• リトルエンディアン
コンピュータにとって処理しやすい
• ところで、バイトオーダって?
2Byte以上(多バイト)のデータ...
78/116
つまり、こいつは
リトルエンディアン
79/116
マジックナンバーの
下にかいてあります
80/116
リトルエンディアン
なら1らしいです
81/116
リトルエンディアン
なら1らしいです
こっちは
32bitの場合は1
64bitの場合は2
ってことが書かれていますね
82/116
83/116
ってことで、64bitで
リトルエンディアンなことが
確認できます
84/116
ここら辺のその他の
情報も
85/116
ここの部分は
ファイルのバージョン
Value must be EV_CURRENTと
あるので、
とにかくEV_CURRENT
でなければならないらしい
86/116
EV_CURRENTは1
87/116
下の部分は
ABI(Application Binary
Interface)を表す
88/116
下の部分は
ABI(Application Binary
Interface)を表す
APIよりもっと低レベルのインターフェース
(システムコール仕様や呼び出し規約など)
89/116
90/116
ってことで、ちゃんとバージョンは
1になっていてABIの部分は0なので
UNIX System V ABI
であることがわかる!
91/116
残りはゼロパディング(0で調整みた
いな)されている部分です
92/116
ここまでくれば、あとはそのまま
93/116
94/116
先ほども確認したとおり
64bitのELFヘッダは64Byte
で、1行に16Byte * 4 行 = 64Byte
よって、この部分までが
ELFヘッダ
95/116
今まで見てきたのは
ここまで!
96/116
では、ささっと
残りの部分を見てい
きましょう
97/116
エントリーポイント(開始位置)
Addrなので8バイト
よって、0x400440とわかる
98/116
プログラムの開始ヘッダ(プログラムヘッダ)
と
セクションヘッダ始点
それぞれ8バイトなので、
0x40と0x19e8とわかる
99/116
フラグは0x0
100/116
ここからはHalf(2バイトずつ)
ELFヘッダのサイズは0x40
(10進数で64なので、最初に確認し
た通りですね!)
101/116
プログラムヘッダのサイズ
と
プログラムヘッダの数
それぞれ、0x38(56バイト)と9
102/116
セクションヘッダのサイズ
と
セクションヘッダの数
それぞれ、0x40(64バイト)と0x1e(30)
103/116
セクションヘッダ文字列テーブルセクション
へのインデックスを表す
0x1b(27)です
104/116
(ノ´・ω・)ノ お疲れ様です
105/116
これでELFヘッダは
完璧ですね!!!
106/116
ってか、これ
どんなことに役立つの・・・?
107/116
目次
• バイナリとは
• バイナリに触れてみる
• 実践編
108/116
CTFみたいな
問題を作ったので
一緒に解きましょう
109/116
Decrypt me!!!
(ヒント: ELFファイル)
110/116
「
熱
血
バ
イ
ナ
リ
ア
ン
十
訓
」よ
り
一
、
わ
か
ら
な
く
て
も
気
に
せ
ず
読
め
!
「熱血!アセンブラ入門」より引用
111/116
では、やりましょう
112/116
まとめ
• バイナリアンとはバイナリ大好きな人
• ELFファイルはELFヘッダやプログラムヘッ
ダなどからできている(それらは構造体で定
義されている)
• 64bitのELFヘッダは64Byte
• ELFのマジックナンバー...
113/116
ちょいと、おまけ
114/116
115/116
2進表示も
できたりしちゃいます
(バイナリアンならこっちで
読まないと・・・?)
116/116
 文字列テーブル
https://docs.oracle.com/cd/E26924_01/html/E25909/chapter6-73709.html
 ABI
http://www.wdic.org/w/TECH/AB...
117/116
ご清聴ありがとうございました!
Upcoming SlideShare
Loading in …5
×

バイナリアンを目指して For a binaryen

2,672 views

Published on

Eyes, JAPAN社内勉強会での弊社兼澤による発表です

Published in: Engineering
  • ACCESS that WEBSITE Over for All Ebooks (Unlimited) ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... DOWNLOAD FULL EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M }
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

バイナリアンを目指して For a binaryen

  1. 1. 1/116 バイナリアンを目指して - For a binaryen - 兼澤 侑也 - Yuya Kanesawa -
  2. 2. 2/116 Self-Introduction • My name is Yuya Kanesawa. • I’m second grader of University of Aizu. • My hobby is Rubik’s Cube and drawing. • My favorite anime is Fate/Zero. • I’m really into BABYMETAL. (Sorry, English section is this only.)
  3. 3. 3/116 Self-Introduction • My name is Yuya Kanesawa. • I’m second grader of University of Aizu. • My hobby is Rubik’s Cube and drawing. • My favorite anime is Fate/Zero. • I’m really into BABYMETAL. (Sorry, English section is this only.)
  4. 4. 4/116
  5. 5. 5/116 Whooooooooooooo!!!! ワ―――ヽ(・∀・)ノ―――イ
  6. 6. 6/116 ゴゴゴゴゴゴゴゴ・・・・・・・
  7. 7. 7/116 次はお前だ!!!!
  8. 8. 8/116 本題に入ります
  9. 9. 9/116 そもそもバイナリアンって?
  10. 10. 10/116
  11. 11. 11/116
  12. 12. 12/116 なんでバイナリ? • 大和セキュリティ場阿忍愚CTFに参加 • 金子さんから聞いた「千田さん」 • 2年生になってから
  13. 13. 13/116 なんでバイナリ? • 大和セキュリティ場阿忍愚CTFに参加 • 金子さんから聞いた「千田さん」 • 2年生になってから
  14. 14. 14/116
  15. 15. 15/116 なんでバイナリ? • 大和セキュリティ場阿忍愚CTFに参加 • 金子さんから聞いた「千田さん」 • 2年生になってから
  16. 16. 16/116
  17. 17. 17/116 なんでバイナリ? • 大和セキュリティ場阿忍愚CTFに参加 • 金子さんから聞いた「千田さん」 • 2年生になってから
  18. 18. 18/116 ↑の本や、Webサイトなどで 勉強していました
  19. 19. 19/116 目的 • バイナリって難しそう・・・・ • バイナリってなにが面白いの・・・? このような人達に 「バイナリって楽しいよ!」と伝えたい もし興味を持って頂けたら 一緒にバイナリアンを目指しましょう
  20. 20. 20/116 目次 • バイナリとは • バイナリに触れてみる • 実践編
  21. 21. 21/116 目次 • バイナリとは • バイナリに触れてみる • 実践編
  22. 22. 22/116 バイナリとは • 「binary」とは「2進数の」という意味 • 0と1で表現されているデータ形式を「バイナ リファイル」など • 実行ファイル、音声ファイル、画像ファイルな ども、バイナリファイル • データ構造の2分木は、バイナリツリーと呼ば れる(2つに分岐しているから)
  23. 23. 23/116 バイナリとは • バイナリファイルは「バイナリエディタ」などで 開く • テキストエディタでは、ほぼ無理
  24. 24. 24/116 バイナリとは 有名なバイナリエディタ • Ollydbg, Bz, Stirling, hexedit, etc ↑OSに合わせて選択
  25. 25. 25/116 バイナリとは 有名なバイナリエディタ • Ollydbg, Bz, Stirling, hexedit, etc ↑OSに合わせて選択 実はVimやEmacsでも開ける (Emacsは使わないので、以下Vimの手順) • 「-b」オプションを指定すればバイナリモード • その後、「:%!xxd」とすれば16進ダンプ可能 今日は「積極的に」、Vimを使っていきます!
  26. 26. 26/116 Vimは今日使うので この際、他のバイナリエディタも 見てみます
  27. 27. 27/116 ファイルの先頭からの アドレスを16進数で 表している
  28. 28. 28/116 表示可能文字 ファイルの内容
  29. 29. 29/116 Bzエディタは このようなビットマップ表示で きるのが便利だったりします (実はVimでもできます)
  30. 30. 30/116 「 熱 血 バ イ ナ リ ア ン 十 訓 」よ り 一 、 ま ず は 読 め ! 「熱血!アセンブラ入門」より引用
  31. 31. 31/116 目次 • バイナリとは • バイナリに触れてみる • 実践編
  32. 32. 32/116 バイナリに触れてみる • ELFファイルのヘッダ(Hello World)が どうなっているか見てみる ↓ /usr/include/elf.h 実行環境:Ubuntu15.04 64bit版
  33. 33. 33/116 ELFファイルについて • 「Executable and Linking Format」 • Linuxディストリビューションの多くで採用され ている実行ファイルのこと (WindowsでいうEXE的な) • CTFなどでもほぼ必ず出てくる
  34. 34. 34/116 ってことで今回は、 ELFがどういう構造をしているのか 見ていきたいと思います
  35. 35. 35/116 ELFの構造 ELFヘッダ プログラムヘッダ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ セクションヘッダ  ELFヘッダ  プログラムヘッダ  データ部分  セクションヘッダ 主にこの4つで構成される
  36. 36. 36/116 ELFの構造 ELFヘッダ プログラムヘッダ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ セクションヘッダ ELFヘッダ 今回見ていくのは この部分
  37. 37. 37/116 ELFの構造 ELFヘッダ プログラムヘッダ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ セクションヘッダ ELFヘッダ 今回見ていくのは この部分 こっちは今回は あまり触れません!
  38. 38. 38/116 $ vim hello.c Hello World を書く
  39. 39. 39/116
  40. 40. 40/116 $ gcc hello.c –o hello コンパイル
  41. 41. 41/116
  42. 42. 42/116
  43. 43. 43/116 $readelf –h でELFヘッダの 情報は見ることができます
  44. 44. 44/116 でも、なんでこうなるのか 知りたいですよね?
  45. 45. 45/116 知りたいですよね!!???
  46. 46. 46/116 $ vim /usr/include/elf.h Vim で elf.h を開く
  47. 47. 47/116
  48. 48. 48/116 なるほど・・・・
  49. 49. 49/116 「 熱 血 バ イ ナ リ ア ン 十 訓 」よ り 一 、 勘 で 読 め ! 「熱血!アセンブラ入門」より引用
  50. 50. 50/116 なるほど!!!!
  51. 51. 51/116 ・Elf64_Half : 2バイト ・Elf64_Word : 4バイト ・Elf64_Addr : 8バイト ・Elf64_Off : 8バイト
  52. 52. 52/116 Half * 8 = 16Byte Word * 2 = 8Byte Addr * 1 = 8Byte Off * 2 = 16Byte 16 + 8 + 8 + 16 = 48 16Byte + 48Byteの 64Byteが 64bitのELFヘッダ EI_NIDENT(なんて読むんでしょう・・?)は、 上の部分でマクロで16と定義していて、さらに unsigned charで宣言しているので、16Byte
  53. 53. 53/116 (余談ですが・・・) じゃあ32bitのELFヘッダは 32Byte?
  54. 54. 54/116 そう思った方は残念
  55. 55. 55/116 実は52Byteだったりします
  56. 56. 56/116 ・マジックナンバーについて (マジックナンバーとは、ファイルの 識別子として用いられるもの)
  57. 57. 57/116 ・マジックナンバーについて (マジックナンバーとは、ファイルの 識別子として用いられるもの) よくわかんないけど、 とにかくこれが マジックナンバーだろう・・・
  58. 58. 58/116 ・マジックナンバーについて (マジックナンバーとは、ファイルの 識別子として用いられるもの) E: 16進数で45 L: 16進数で4c F: 16進数で46 よって、ELFの マジックナンバーは 「7f 45 4c 46」のはず
  59. 59. 59/116 $ vim –b hello バイナリモード $ :%!xxd 16進ダンプ
  60. 60. 60/116
  61. 61. 61/116
  62. 62. 62/116 \(´∀`) /ワ-イ!!!
  63. 63. 63/116 ってことで、どんどん見ていきましょう
  64. 64. 64/116
  65. 65. 65/116 ファイルのタイプ を表している ・実行ファイルなら2 下の部分はアーキテクチャ (どういった構成か) 実行環境より、x86-64なので、 どこかにないか見ていく
  66. 66. 66/116 あっ、あった x86-64なら62らしい 16進数にして、3e
  67. 67. 67/116 よって、Hello Worldは実行ファイルなので ファイルタイプの部分は 2 また、アーキテクチャはx86-64なので 3e になっているはず・・・
  68. 68. 68/116
  69. 69. 69/116
  70. 70. 70/116 それぞれ、Elf64_Halfなので ファイルタイプとアーキテクチャは 2Byteずつ
  71. 71. 71/116 ん・・・?
  72. 72. 72/116 ちゃんと2Byteずつ 02と3e入ってるけど 格納されてる順番 おかしくね・・・?
  73. 73. 73/116 ???「はっはっは!!!」
  74. 74. 74/116 そ・・・その声は・・・!!
  75. 75. 75/116
  76. 76. 76/116 ここで出てくるバイトオーダの話 • ビッグエンディアンとリトルエンディアン (リトルエンディアンってなんかカッコイイですよね) 要は、値をどういう順序で メモリ上に格納するかということ そのままの順序なら、ビッグエンディアン 逆順なら、リトルエンディアン
  77. 77. 77/116 ここで出てくるバイトオーダの話 • ビッグエンディアン 人間にとってわかりやすい(そのままの順番の為) • リトルエンディアン コンピュータにとって処理しやすい • ところで、バイトオーダって? 2Byte以上(多バイト)のデータをメモリ上に 配置する時の方式のこと
  78. 78. 78/116 つまり、こいつは リトルエンディアン
  79. 79. 79/116 マジックナンバーの 下にかいてあります
  80. 80. 80/116 リトルエンディアン なら1らしいです
  81. 81. 81/116 リトルエンディアン なら1らしいです こっちは 32bitの場合は1 64bitの場合は2 ってことが書かれていますね
  82. 82. 82/116
  83. 83. 83/116 ってことで、64bitで リトルエンディアンなことが 確認できます
  84. 84. 84/116 ここら辺のその他の 情報も
  85. 85. 85/116 ここの部分は ファイルのバージョン Value must be EV_CURRENTと あるので、 とにかくEV_CURRENT でなければならないらしい
  86. 86. 86/116 EV_CURRENTは1
  87. 87. 87/116 下の部分は ABI(Application Binary Interface)を表す
  88. 88. 88/116 下の部分は ABI(Application Binary Interface)を表す APIよりもっと低レベルのインターフェース (システムコール仕様や呼び出し規約など)
  89. 89. 89/116
  90. 90. 90/116 ってことで、ちゃんとバージョンは 1になっていてABIの部分は0なので UNIX System V ABI であることがわかる!
  91. 91. 91/116 残りはゼロパディング(0で調整みた いな)されている部分です
  92. 92. 92/116 ここまでくれば、あとはそのまま
  93. 93. 93/116
  94. 94. 94/116 先ほども確認したとおり 64bitのELFヘッダは64Byte で、1行に16Byte * 4 行 = 64Byte よって、この部分までが ELFヘッダ
  95. 95. 95/116 今まで見てきたのは ここまで!
  96. 96. 96/116 では、ささっと 残りの部分を見てい きましょう
  97. 97. 97/116 エントリーポイント(開始位置) Addrなので8バイト よって、0x400440とわかる
  98. 98. 98/116 プログラムの開始ヘッダ(プログラムヘッダ) と セクションヘッダ始点 それぞれ8バイトなので、 0x40と0x19e8とわかる
  99. 99. 99/116 フラグは0x0
  100. 100. 100/116 ここからはHalf(2バイトずつ) ELFヘッダのサイズは0x40 (10進数で64なので、最初に確認し た通りですね!)
  101. 101. 101/116 プログラムヘッダのサイズ と プログラムヘッダの数 それぞれ、0x38(56バイト)と9
  102. 102. 102/116 セクションヘッダのサイズ と セクションヘッダの数 それぞれ、0x40(64バイト)と0x1e(30)
  103. 103. 103/116 セクションヘッダ文字列テーブルセクション へのインデックスを表す 0x1b(27)です
  104. 104. 104/116 (ノ´・ω・)ノ お疲れ様です
  105. 105. 105/116 これでELFヘッダは 完璧ですね!!!
  106. 106. 106/116 ってか、これ どんなことに役立つの・・・?
  107. 107. 107/116 目次 • バイナリとは • バイナリに触れてみる • 実践編
  108. 108. 108/116 CTFみたいな 問題を作ったので 一緒に解きましょう
  109. 109. 109/116 Decrypt me!!! (ヒント: ELFファイル)
  110. 110. 110/116 「 熱 血 バ イ ナ リ ア ン 十 訓 」よ り 一 、 わ か ら な く て も 気 に せ ず 読 め ! 「熱血!アセンブラ入門」より引用
  111. 111. 111/116 では、やりましょう
  112. 112. 112/116 まとめ • バイナリアンとはバイナリ大好きな人 • ELFファイルはELFヘッダやプログラムヘッ ダなどからできている(それらは構造体で定 義されている) • 64bitのELFヘッダは64Byte • ELFのマジックナンバーは「7f 45 4c 46」 ↑この2つだけ覚えて 帰って頂ければ結構です
  113. 113. 113/116 ちょいと、おまけ
  114. 114. 114/116
  115. 115. 115/116 2進表示も できたりしちゃいます (バイナリアンならこっちで 読まないと・・・?)
  116. 116. 116/116  文字列テーブル https://docs.oracle.com/cd/E26924_01/html/E25909/chapter6-73709.html  ABI http://www.wdic.org/w/TECH/ABI  Impressive http://impressive.sourceforge.net/manual.php#cli  場阿忍愚CTF http://burningctf.yamatosecurity.com/score/about  ELF http://docs.oracle.com/cd/E19620-01/805- 5821/6j5ga47bq/index.html#chapter6-35342  千田さんSlide http://www.slideshare.net/codeblue_jp/masaaki-chida-japub
  117. 117. 117/116 ご清聴ありがとうございました!

×