SlideShare a Scribd company logo
1 of 72
Download to read offline
続・
ハロー・ワールド
入門
坂井弘亮
(KOZOSプロジェクト)
TwitterID:kozossakai
毎年恒例
バイナリカレンダー
あります
バイナリカレンダー
とは何か
(普通のカレンダー)
風景や人物がテーマ
(バイナリカレンダー)
バイナリデータがテーマ
こんな感じです
(バイナリカレンダー2014) (アーキテクチャカレンダー2015)
そして今年
乱数カレンダー
乱数カレンダー
とは何か
乱数データをテーマとした
バイナリカレンダーの
一種です
こんな感じです
乱数データの
ダンプ
日付は16進数と
2進数を併記
(さすがにここは
乱数ではない)
乱数一覧
1月 /dev/urandom 7月 bashの$RANDOM
2月 rand() 8月 Pythonの
random.randint()
3月 ガウス分布 9月 random()
4月 旧rand() 10月 Numpyの
random.randint()
5月 M系列 11月 Awkのrand()
6月 Perlのrand() 12月 openssl rand
特徴的な月
4月
(旧libcの
rand()関数)
4月
(旧libcの
rand()関数)
パターンが
規則的
4月
(旧libcの
rand()関数)
パターンが
規則的
rv = rv * 1103515245 + 12345;
他にも
5月
(M系列)
5月
(M系列)
先頭に
ゼロデータの
連続
5月
(M系列)
先頭に
ゼロデータの
連続
乱数の種を適切に選ばないと
乱数性が低くなる
(この例では seed = 1)
前置き終わり
続・
ハロー・ワールド
入門
坂井弘亮
(KOZOSプロジェクト)
TwitterID:kozossakai
「ハロー・ワールド入門」
とは何か
1年前の
OSC東京春の
LTでの発表
「ハロー・ワールド入門」
C言語の入門時に
必ずと言っていいほど書く
「ハロー・ワールド」
こんなのです
#include <stdio.h>
int main()
{
printf("Hello, World!n");
return 0;
}
実行結果
Hello, World!
単に
「Hello, World!」
と出力するだけの
プログラム
たいていのプログラミング
入門書はこれで始まる
これを徹底的に
解析する,という話
1年前の
OSC東京春の
LTで言ったこと
マニアックな技術書を
書くのはもう卒業だ!
今年は入門書を書くぞ!
入門書と言えば
ハロー・ワールドだろう
じゃあハロー・ワールドだけに
ついて解説する本を書けば,
入門書の前に読むべき
スーパー入門書になるのでは?
そして今年
続・
ハロー・ワールド
入門
坂井弘亮
(KOZOSプロジェクト)
TwitterID:kozossakai
そもそもの
きっかけ
こんなことを
言われたことが
ある
「ハロー・ワールド」について
レポートを書けという
課題が出れば,
5枚でも6枚でも書ける!
(要するにそれほど奥が深い)
これを聞いたときの
正直な感想
いやいや
無理でしょ
足りないでしょ
50枚は必要でしょ
ということで
書いてみた
「ハロー "Hello, World"」
(当初の予定)
ハロー・ワールドについて
いろんな視点から説明した
150ページくらいの薄い本
(できあがったもの)
ハロー・ワールドについて
徹底的に解析した
450ページくらいの
薄くない本(またか)
注意
C言語によるハロー・ワールド
の入門です
ハロー・ワールドによるC言語
の入門ではありません
つまり
K&Rの前に読むべき
スーパー入門書
ハロー・ワールドの
入門書なので
この本には
リスト1しか
ありません
利用しているOSS
(たいへんありがたい)
Linuxカーネル glibc
FreeBSD Newlib
GDB GCC binutils
CentOS
内容
(第1章)
CentOS環境でハロー・ワー
ルドをビルドして 逆アセンブ
ル結果や実行ファイルの解析
結果を眺めてみたりする
(第2章)
printf()の動作を知るために
デバッガで動的解析して シ
ステムコールの呼出しまでを
追う
(第3章)
Linuxカーネルのソースコー
ドを読んで,Linuxのシステム
コール処理を探る
(第4章)
標準ライブラリのソースコー
ドを読んでシステムコールの
呼出し処理を知る. ついでに
ビルドして動的解析で処理を
追う
(第5章)
main()関数が呼ばれる前の
スタートアップの処理と,
main()関数から戻った後の
終了処理を探る
(第6章)
標準ライブラリのソースコー
ドを読んでprintf()の実装を
知る. FreeBSDやNewlibの
実装も見てみる
こんなのが延々と続く,
(自己評価で)最高に面白い本
他にも実行ファイル解析
共有ライブラリ
最適化
可変長引数などの話もあり
Linux/x86だけでなく
FreeBSDやARMなど
他実装/アーキの話題もあり
(このへんが特色)
どうもありがとう
ございました

More Related Content

Viewers also liked

「機械学習 By スタンフォード大学」勉強会 2015.09.11
「機械学習 By スタンフォード大学」勉強会 2015.09.11「機械学習 By スタンフォード大学」勉強会 2015.09.11
「機械学習 By スタンフォード大学」勉強会 2015.09.11
Minoru Chikamune
 
ディジタル信号処理 課題解説 その8
ディジタル信号処理 課題解説 その8ディジタル信号処理 課題解説 その8
ディジタル信号処理 課題解説 その8
noname409
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
Etsuji Nakai
 

Viewers also liked (19)

Cloud frontの概要と勘所
Cloud frontの概要と勘所Cloud frontの概要と勘所
Cloud frontの概要と勘所
 
関東コンピュータビジョン勉強会
関東コンピュータビジョン勉強会関東コンピュータビジョン勉強会
関東コンピュータビジョン勉強会
 
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
 
有名論文から学ぶディープラーニング 2016.03.25
有名論文から学ぶディープラーニング 2016.03.25有名論文から学ぶディープラーニング 2016.03.25
有名論文から学ぶディープラーニング 2016.03.25
 
最先端NLP勉強会 “Learning Language Games through Interaction” Sida I. Wang, Percy L...
最先端NLP勉強会“Learning Language Games through Interaction”Sida I. Wang, Percy L...最先端NLP勉強会“Learning Language Games through Interaction”Sida I. Wang, Percy L...
最先端NLP勉強会 “Learning Language Games through Interaction” Sida I. Wang, Percy L...
 
深層学習とTensorFlow入門
深層学習とTensorFlow入門深層学習とTensorFlow入門
深層学習とTensorFlow入門
 
畳み込みLstm
畳み込みLstm畳み込みLstm
畳み込みLstm
 
「機械学習 By スタンフォード大学」勉強会 2015.09.11
「機械学習 By スタンフォード大学」勉強会 2015.09.11「機械学習 By スタンフォード大学」勉強会 2015.09.11
「機械学習 By スタンフォード大学」勉強会 2015.09.11
 
Chainer, Cupy入門
Chainer, Cupy入門Chainer, Cupy入門
Chainer, Cupy入門
 
ディジタル信号処理 課題解説 その8
ディジタル信号処理 課題解説 その8ディジタル信号処理 課題解説 その8
ディジタル信号処理 課題解説 その8
 
20160724_cv_sfm_revisited
20160724_cv_sfm_revisited20160724_cv_sfm_revisited
20160724_cv_sfm_revisited
 
20161203 cv 3_d_recon_tracking_eventcamera
20161203 cv 3_d_recon_tracking_eventcamera20161203 cv 3_d_recon_tracking_eventcamera
20161203 cv 3_d_recon_tracking_eventcamera
 
Gpgpu tomoaki-fp16
Gpgpu tomoaki-fp16Gpgpu tomoaki-fp16
Gpgpu tomoaki-fp16
 
TensorFlowで遊んでみよう!
TensorFlowで遊んでみよう!TensorFlowで遊んでみよう!
TensorFlowで遊んでみよう!
 
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
Software for Edge Heavy Computing @ INTEROP 2016 TokyoSoftware for Edge Heavy Computing @ INTEROP 2016 Tokyo
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
 
Cvim saisentan-cvpr-hyper depth
Cvim saisentan-cvpr-hyper depthCvim saisentan-cvpr-hyper depth
Cvim saisentan-cvpr-hyper depth
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
 
【第27回コンピュータビジョン勉強会@関東】OpenCV 便利Tips紹介
【第27回コンピュータビジョン勉強会@関東】OpenCV 便利Tips紹介【第27回コンピュータビジョン勉強会@関東】OpenCV 便利Tips紹介
【第27回コンピュータビジョン勉強会@関東】OpenCV 便利Tips紹介
 
Cvim saisentan-4-2-tomoaki
Cvim saisentan-4-2-tomoakiCvim saisentan-4-2-tomoaki
Cvim saisentan-4-2-tomoaki
 

More from kozossakai

Possibility of arbitrary code execution by Step-Oriented Programming
Possibility of arbitrary code execution by Step-Oriented ProgrammingPossibility of arbitrary code execution by Step-Oriented Programming
Possibility of arbitrary code execution by Step-Oriented Programming
kozossakai
 

More from kozossakai (14)

バイナリ駄洒落コンテスト
バイナリ駄洒落コンテストバイナリ駄洒落コンテスト
バイナリ駄洒落コンテスト
 
spinsn - CPUの特殊命令の仕様推定と実装の競技
spinsn - CPUの特殊命令の仕様推定と実装の競技spinsn - CPUの特殊命令の仕様推定と実装の競技
spinsn - CPUの特殊命令の仕様推定と実装の競技
 
Step-Oriented Programming による任意コード実行の可能性
Step-Oriented Programming による任意コード実行の可能性Step-Oriented Programming による任意コード実行の可能性
Step-Oriented Programming による任意コード実行の可能性
 
Possibility of arbitrary code execution by Step-Oriented Programming
Possibility of arbitrary code execution by Step-Oriented ProgrammingPossibility of arbitrary code execution by Step-Oriented Programming
Possibility of arbitrary code execution by Step-Oriented Programming
 
アセンブラ短歌 (AVTOKYO2013.5 日本語版)
アセンブラ短歌 (AVTOKYO2013.5 日本語版)アセンブラ短歌 (AVTOKYO2013.5 日本語版)
アセンブラ短歌 (AVTOKYO2013.5 日本語版)
 
Assembly Language Tanka (AVTOKYO2013.5 English version)
Assembly Language Tanka (AVTOKYO2013.5 English version)Assembly Language Tanka (AVTOKYO2013.5 English version)
Assembly Language Tanka (AVTOKYO2013.5 English version)
 
アセンブラ短歌(TechLION vol.15 ライトニングトーク)
アセンブラ短歌(TechLION vol.15 ライトニングトーク)アセンブラ短歌(TechLION vol.15 ライトニングトーク)
アセンブラ短歌(TechLION vol.15 ライトニングトーク)
 
フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)
フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)
フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)
 
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)
 
バイナリかるた(アーキテクチャかるた・完全版)
バイナリかるた(アーキテクチャかるた・完全版)バイナリかるた(アーキテクチャかるた・完全版)
バイナリかるた(アーキテクチャかるた・完全版)
 
バイナリかるた(アーキテクチャかるた)
バイナリかるた(アーキテクチャかるた)バイナリかるた(アーキテクチャかるた)
バイナリかるた(アーキテクチャかるた)
 
バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)
バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)
バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)
 
アセンブラ短歌(オープンソースカンファレンス2013 Tokyo/Fall ライトニングトーク)
アセンブラ短歌(オープンソースカンファレンス2013 Tokyo/Fall ライトニングトーク)アセンブラ短歌(オープンソースカンファレンス2013 Tokyo/Fall ライトニングトーク)
アセンブラ短歌(オープンソースカンファレンス2013 Tokyo/Fall ライトニングトーク)
 
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
 

Recently uploaded

Recently uploaded (12)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

続・ハロー・ワールド入門(オープンソースカンファレンス2016 Tokyo/Spring ライトニングトーク)