SlideShare uma empresa Scribd logo
1 de 28
「アセンブラ短歌 on Web」を
作ってみよう
愛甲健二
@07c00
kenjiaiko@gmail.com
アセンブラ短歌とは?
「アセンブラ短歌」とは、
5・7・5・7・7の31バイト(みそひ
とバイト)から成る機械語コードでプログ
ラムを書いてみるという近未来の文化的趣
味
http://kozos.jp/asm-tanka/
アセンブラ短歌 on Web とは?
「アセンブラ短歌 on Web」 とは
ブラウザ上からアセンブラ短歌をカジュア
ルに試せる環境, スマホからもアクセスでき,
通勤電車やちょっとした待ち時間にも気軽
に短歌れる
どうやってブラウザ上で
アセンブラ短歌を実現するのか
…

任意のマシン語が実行できる環境
をどうやって用意するのか…
実現方法
1. エミュレーション方式
– 各種CPUをエミュレーション
– 例:JavaScriptでx86/ARM/PPCなどを作る

2. サンドボックス方式
– 隔離された環境(SandBox)で実行
– 例:VM環境内で実行→結果をブラウザへ
実現方法
1. エミュレーション方式
– 各種CPUをエミュレーション
– 例:JavaScriptでx86/ARM/PPCなどを作る

2. サンドボックス方式
– 隔離された環境(SandBox)で実行
– 例:VM環境内で実行→結果をブラウザへ
CPU Emulation on JavaScript

jslinux
http://bellard.org/jslinux/

Virtual x86
http://copy.sh/v24/
Assembly Tanka on JavaScript
xor eax,eax = 31 C0
…

eax = 0x00
cpux86.js
Assembly Tanka on JavaScript
xor eax,eax = 31 C0
…

eax = 0x00
cpux86.js

※ I/Oは決めておく必要あ
り

← PUSH!

■Demo
Assembly Tanka on JavaScript
http://07c00.com/asmtanka_on_js/
Demo
http://07c00.com/asmtanka_on_js/
実現方法
1. エミュレーション方式
– 各種CPUをエミュレーション
– 例:JavaScriptでx86/ARM/PPCなどを作る

2. サンドボックス方式
– 隔離された環境(SandBox)で実行
– 例:VM環境内で実行→結果をブラウザへ
SandBox for analyzing malwares

VirtualBox
https://www.virtualbox.org/

https://www.virtualbox.org/wiki/Screenshots

VMWare
http://www.vmware.com/jp
でも
たった31バイトを実行するため
に
VM立ち上げるとかさすがに厳
しい
そこで「デバッガ⇔デバッギ」
の関係になる2つのプロセスを
立ち上げ
実行コードをデバッギに渡し
結果をデバッガが受け取る仕組み
を
作る
Assembly Tanka on Server-side
③

①

Debugging

⑤

tanka.cgi

④

②

New process

Return the result Execute

• Debugging API
– DebugActiveProcess (Win系)
– ptrace(UNIX系)

6a
68
6a
68
59

00
79
08
57
cd

58
61
5a
61
80

50
6d
5b
6b
58

40
61 50 40
40
61 54 40
58 58 c3
Assembly Tanka on Server-side
STEP

ステップ実行毎に
デバッガが命令を検査 tanka.cgi

New process

push 0x00 = 6a 00
6a
68
6a
68
59

00
79
08
57
cd

58
61
5a
61
80

50
6d
5b
6b
58

40
61 50 40
40
61 54 40
58 58 c3
Assembly Tanka on Server-side
STEP

ステップ実行毎に
デバッガが命令を検査 tanka.cgi

New process

pop eax = 58
6a
68
6a
68
59

00
79
08
57
cd

58
61
5a
61
80

50
6d
5b
6b
58

40
61 50 40
40
61 54 40
58 58 c3
Assembly Tanka on Server-side
STEP

ステップ実行毎に
デバッガが命令を検査 tanka.cgi

New process

push eax = 50
6a
68
6a
68
59

00
79
08
57
cd

58
61
5a
61
80

50
6d
5b
6b
58

40
61 50 40
40
61 54 40
58 58 c3
Assembly Tanka on Server-side
STEP

ステップ実行毎に
デバッガが命令を検査 tanka.cgi

New process

inc eax = 40
6a
68
6a
68
59

00
79
08
57
cd

58
61
5a
61
80

50
6d
5b
6b
58

40
61 50 40
40
61 54 40
58 58 c3
Assembly Tanka on Server-side
STEP

ステップ実行毎に
デバッガが命令を検査 tanka.cgi
sys-callが呼ばれたら
引数を確認し
int 0x80 = cd 80
OKなら実行を許す
ダメならそこでストップ
→sys-callさえ監視しておけば
ok

New process
6a
68
6a
68
59

00
79
08
57
cd

58
61
5a
61
80

50
6d
5b
6b
58

40
61 50 40
40
61 54 40
58 58 c3
Demo
http://x86.seccon.jp/99.html
アセンブラ短歌の楽しみかた
• いろんなCPUでやってみる
• いろんなOS(環境)でやってみる
• 何文字printできるかに挑戦してみる
• 味わい深さを追求してみる

• 短歌を簡単に作れる環境を作ってみる
• 短歌を自動生成できないか考えてみる
好きな楽しみかたをすれば
いいと思います
でも一回は短歌やってみてほしいです
ぜったい楽しいので
最後に
その他の on JS を紹介
バイナリかるた on JS
http://x86.seccon.jp/karuta/test.html
Demo
アセンブラテトリス on JS
http://07c00.com/asmtetris_on_js/
Demo
バイナリを楽しもう!
絶賛発売中!

Thank you!

https://book.mynavi.jp/ec/products/detail/id=24267

Mais conteúdo relacionado

Mais procurados

それ RubyMine でできるよ
それ RubyMine でできるよそれ RubyMine でできるよ
それ RubyMine でできるよTakuya INOUE
 
Windowsマシンを使いだしたときの失敗談
Windowsマシンを使いだしたときの失敗談Windowsマシンを使いだしたときの失敗談
Windowsマシンを使いだしたときの失敗談Kameko Ohmura
 
第二回 クラウドサーバー管理者若葉の会
第二回 クラウドサーバー管理者若葉の会第二回 クラウドサーバー管理者若葉の会
第二回 クラウドサーバー管理者若葉の会masayoshi shiraishi
 
小,中規模WEBサイト 制作でAWSを使う
小,中規模WEBサイト 制作でAWSを使う小,中規模WEBサイト 制作でAWSを使う
小,中規模WEBサイト 制作でAWSを使うNobuhiko Futagami
 
Galage labsサーバー部6U自己紹介
Galage labsサーバー部6U自己紹介Galage labsサーバー部6U自己紹介
Galage labsサーバー部6U自己紹介Seiko Kuchida
 
2009 02 12_flosss_cms解体ショー
2009 02 12_flosss_cms解体ショー2009 02 12_flosss_cms解体ショー
2009 02 12_flosss_cms解体ショーTom Hayakawa
 
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~Yuki Hirano
 
Introduction of mruby & Webruby script example
Introduction of mruby & Webruby script exampleIntroduction of mruby & Webruby script example
Introduction of mruby & Webruby script examplekishima7
 
NUTハッカソン2014成果報告
NUTハッカソン2014成果報告NUTハッカソン2014成果報告
NUTハッカソン2014成果報告Joe_noh
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacsShougo
 

Mais procurados (13)

それ RubyMine でできるよ
それ RubyMine でできるよそれ RubyMine でできるよ
それ RubyMine でできるよ
 
Windowsマシンを使いだしたときの失敗談
Windowsマシンを使いだしたときの失敗談Windowsマシンを使いだしたときの失敗談
Windowsマシンを使いだしたときの失敗談
 
第二回 クラウドサーバー管理者若葉の会
第二回 クラウドサーバー管理者若葉の会第二回 クラウドサーバー管理者若葉の会
第二回 クラウドサーバー管理者若葉の会
 
小,中規模WEBサイト 制作でAWSを使う
小,中規模WEBサイト 制作でAWSを使う小,中規模WEBサイト 制作でAWSを使う
小,中規模WEBサイト 制作でAWSを使う
 
Galage labsサーバー部6U自己紹介
Galage labsサーバー部6U自己紹介Galage labsサーバー部6U自己紹介
Galage labsサーバー部6U自己紹介
 
Sass less
Sass lessSass less
Sass less
 
2009 02 12_flosss_cms解体ショー
2009 02 12_flosss_cms解体ショー2009 02 12_flosss_cms解体ショー
2009 02 12_flosss_cms解体ショー
 
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
 
Introduction of mruby & Webruby script example
Introduction of mruby & Webruby script exampleIntroduction of mruby & Webruby script example
Introduction of mruby & Webruby script example
 
NUTハッカソン2014成果報告
NUTハッカソン2014成果報告NUTハッカソン2014成果報告
NUTハッカソン2014成果報告
 
エディタ戦争
エディタ戦争エディタ戦争
エディタ戦争
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacs
 
VimM#3
VimM#3VimM#3
VimM#3
 

Destaque

数式を使わないJubatus入門 分散処理編
数式を使わないJubatus入門 分散処理編数式を使わないJubatus入門 分散処理編
数式を使わないJubatus入門 分散処理編Kenji Aiko
 
コメントから動画の種類を推測できるか
コメントから動画の種類を推測できるかコメントから動画の種類を推測できるか
コメントから動画の種類を推測できるかKenji Aiko
 
text analyzing
text analyzingtext analyzing
text analyzingKenji Aiko
 
これからのマルウェアの話をしよう
これからのマルウェアの話をしようこれからのマルウェアの話をしよう
これからのマルウェアの話をしようKenji Aiko
 
CTF(Capture the Flag)って何?
CTF(Capture the Flag)って何?CTF(Capture the Flag)って何?
CTF(Capture the Flag)って何?Kenji Aiko
 
SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-Hiromu Yakura
 
OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介Hiromu Yakura
 
Why don't you learn programming?
Why don't you learn programming?Why don't you learn programming?
Why don't you learn programming?Hiromu Yakura
 
ナウいAndroidセキュリティ
ナウいAndroidセキュリティナウいAndroidセキュリティ
ナウいAndroidセキュリティHiromu Yakura
 
新しいライブ映像再生システムを研究してみた
新しいライブ映像再生システムを研究してみた新しいライブ映像再生システムを研究してみた
新しいライブ映像再生システムを研究してみたHiromu Yakura
 
CTF, What's in it for me?
CTF, What's in it for me?CTF, What's in it for me?
CTF, What's in it for me?Hiromu Yakura
 
Androidにおける強制アクセス制御
Androidにおける強制アクセス制御Androidにおける強制アクセス制御
Androidにおける強制アクセス制御Hiromu Yakura
 
Arduinoでプログラミングに触れてみよう
Arduinoでプログラミングに触れてみようArduinoでプログラミングに触れてみよう
Arduinoでプログラミングに触れてみようHiromu Yakura
 
Trendmicro Security Award 2012 Final Presentation
Trendmicro Security Award 2012 Final PresentationTrendmicro Security Award 2012 Final Presentation
Trendmicro Security Award 2012 Final PresentationHiromu Yakura
 
GAME ON 特別イベント 「ゲームってなんでプログラミング?」
GAME ON 特別イベント 「ゲームってなんでプログラミング?」GAME ON 特別イベント 「ゲームってなんでプログラミング?」
GAME ON 特別イベント 「ゲームってなんでプログラミング?」Hiromu Yakura
 

Destaque (20)

数式を使わないJubatus入門 分散処理編
数式を使わないJubatus入門 分散処理編数式を使わないJubatus入門 分散処理編
数式を使わないJubatus入門 分散処理編
 
コメントから動画の種類を推測できるか
コメントから動画の種類を推測できるかコメントから動画の種類を推測できるか
コメントから動画の種類を推測できるか
 
Main
MainMain
Main
 
Kbouncer
KbouncerKbouncer
Kbouncer
 
愛甲健二
愛甲健二愛甲健二
愛甲健二
 
text analyzing
text analyzingtext analyzing
text analyzing
 
これからのマルウェアの話をしよう
これからのマルウェアの話をしようこれからのマルウェアの話をしよう
これからのマルウェアの話をしよう
 
CTF(Capture the Flag)って何?
CTF(Capture the Flag)って何?CTF(Capture the Flag)って何?
CTF(Capture the Flag)って何?
 
SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-
 
OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介
 
Why don't you learn programming?
Why don't you learn programming?Why don't you learn programming?
Why don't you learn programming?
 
ナウいAndroidセキュリティ
ナウいAndroidセキュリティナウいAndroidセキュリティ
ナウいAndroidセキュリティ
 
新しいライブ映像再生システムを研究してみた
新しいライブ映像再生システムを研究してみた新しいライブ映像再生システムを研究してみた
新しいライブ映像再生システムを研究してみた
 
CTF, What's in it for me?
CTF, What's in it for me?CTF, What's in it for me?
CTF, What's in it for me?
 
検証、SEAndroid
検証、SEAndroid検証、SEAndroid
検証、SEAndroid
 
Androidにおける強制アクセス制御
Androidにおける強制アクセス制御Androidにおける強制アクセス制御
Androidにおける強制アクセス制御
 
Arduinoでプログラミングに触れてみよう
Arduinoでプログラミングに触れてみようArduinoでプログラミングに触れてみよう
Arduinoでプログラミングに触れてみよう
 
Trendmicro Security Award 2012 Final Presentation
Trendmicro Security Award 2012 Final PresentationTrendmicro Security Award 2012 Final Presentation
Trendmicro Security Award 2012 Final Presentation
 
ICTのちから
ICTのちからICTのちから
ICTのちから
 
GAME ON 特別イベント 「ゲームってなんでプログラミング?」
GAME ON 特別イベント 「ゲームってなんでプログラミング?」GAME ON 特別イベント 「ゲームってなんでプログラミング?」
GAME ON 特別イベント 「ゲームってなんでプログラミング?」
 

Último

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 

Último (9)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 

アセンブラ短歌 On web