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.

Assembly Language Tanka - SAKAI Hiroaki

658 views

Published on

http://ja.avtokyo.org/MediaArchives

Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

Assembly Language Tanka - SAKAI Hiroaki

  1. 1. Assembly Language Tanka SAKAI Hiroaki (KOZOS Project) TwitterID:kozossakai
  2. 2. Assembly Language Tanka?
  3. 3. What's assembly language tanka? Write program in 5+7+5+7+7 machine codes. It's cool and exciting!
  4. 4. Example
  5. 5. 68 72 6c 64 21 68 6f 20 57 6f 90 90 68 48 65 6c 6c 89 e5 6a 0c 55 6a 02 50 90 6a 04 58 cd 80
  6. 6. Write on Japanese Tanka card.
  7. 7. Result
  8. 8. Hello World!
  9. 9. in other languages,
  10. 10. Tanka is impossible in other programming languages.
  11. 11. For example, Shell script
  12. 12. #!/bin/sh (9 letters!)
  13. 13. For example, Language C
  14. 14. #include <stdio.h> (18 letters!)
  15. 15. XSS Tanka?
  16. 16. XSS tanka has no tankism
  17. 17. Assembly is most tankable language
  18. 18. in SECCON Nagano,
  19. 19. What's displayed?
  20. 20. Assembly language tanka's
  21. 21. hanging scroll!
  22. 22. See well.
  23. 23. Title: Niigata
  24. 24. So,
  25. 25. Let's tanking!
  26. 26. Title: Summer vacation Tankist: Me
  27. 27. Check points
  28. 28. See assembly push $0 pop %eax push %eax inc %eax push $0x616d6179 push %eax inc %eax push $8 pop %edx pop %ebx inc %eax push $0x616b6157 push %esp inc %eax pop %ecx int $0x80 pop %eax pop %eax pop %eax ret Upper section Lower section
  29. 29. See assembly push $0 pop %eax push %eax inc %eax push $0x616d6179 push %eax inc %eax push $8 pop %edx pop %ebx inc %eax push $0x616b6157 push %esp inc %eax pop %ecx int $0x80 pop %eax pop %eax pop %eax ret Upper section Lower section Same instruction in last position.
  30. 30. That is,
  31. 31. Stepped on the rhyme.
  32. 32. Stepped on the rhyme by 0x40
  33. 33. Other points
  34. 34. push $0 pop %eax push %eax inc %eax push $0x616d6179 push %eax inc %eax push $8 pop %edx pop %ebx inc %eax push $0x616b6157 push %esp inc %eax pop %ecx int $0x80 pop %eax pop %eax pop %eax ret
  35. 35. push $0 pop %eax push %eax inc %eax push $0x616d6179 push %eax inc %eax push $8 pop %edx pop %ebx inc %eax push $0x616b6157 push %esp inc %eax pop %ecx int $0x80 pop %eax pop %eax pop %eax ret Set up registers by value of EAX.
  36. 36. That is,
  37. 37. Like a flow of a brook.
  38. 38. See instructions
  39. 39. push $0 pop %eax push %eax inc %eax push $0x616d6179 push %eax inc %eax push $8 pop %edx pop %ebx inc %eax push $0x616b6157 push %esp inc %eax pop %ecx int $0x80 pop %eax pop %eax pop %eax ret
  40. 40. push $0 pop %eax push %eax inc %eax push $0x616d6179 push %eax inc %eax push $8 pop %edx pop %ebx inc %eax push $0x616b6157 push %esp inc %eax pop %ecx int $0x80 pop %eax pop %eax pop %eax ret Mnemonic has a rhythm, "push-pop-inc".
  41. 41. Comments While EAX first set as zero increases every section by the inc instruction, the value of EAX was diverted and other parameters are set. This seems to be the flow of a brook. There is a rhythm which is skipped in a mnemonic like "push-pop-push-inc, push-push-inc" and "push-pop-pop-inc, push-push-inc". The sight of the children who play the side of a brook is made to consider. The theme the "summer vacation" is often expressed.
  42. 42. Much tankassion!
  43. 43. Information
  44. 44. Book of assembly language tanka!
  45. 45. Assembly programming in 31 bytes World of assembly language tanka
  46. 46. Tankists: Sakai Hiroaki Aiko Kenji Matsuda Kazuki Sakai Takeyasu Takesako Yoshinori
  47. 47. Now on sale!
  48. 48. Event for book! (January 20) "2014 Let's try assembly language tanka!" at Mynavi Room
  49. 49. Today's main subject!
  50. 50. What is the most tankaful architecture?
  51. 51. RISC architecture: Instruction is fixed in 4 bytes. If flexible instruction, most architecture has machine code of even length. Untankable!
  52. 52. Tankable architectures x86(Intel) M32C(Mitsubishi) MN10300(Panasonic) RL78(Renesas) RX(Renesas) Xtensa(Tensilica)
  53. 53. Results
  54. 54. RX(Renesas Electronics)
  55. 55. Assemblymov.l #1, r1 mov.l #10, r3 nop mov.l #0x6c6c6548, [r0] nop mov.l #0x6c72, 8[r0] mov.l #0x6f57206f, 4[r0] mov.l r0, r2 mov.l #5, r5 int #255 Upper section Lower section
  56. 56. Execution
  57. 57. Hello Worl (10 letters)
  58. 58. RL78(Renesas Electronics)
  59. 59. Hello Wor (9 letters)
  60. 60. Others
  61. 61. MN10300 M32C Hello Wo Hello! (8 letters) (6 letters)
  62. 62. i386/FreeBSD x86/Linux Hello World! Hello World!! (12 letters) (13 letters)
  63. 63. Let's compare.
  64. 64. Before comparison
  65. 65. For quantification, a unit is needed.
  66. 66. Define a unit BPT (Byte per Tanka) How tankaful for tanking.
  67. 67. Example on RX hello Worl 10 letters: 10BPT
  68. 68. Aggregation
  69. 69. M32C 6BPT MN10300 8BPT RL78 9BPT RX 10BPT i386/FreeBSD12BPT x86/Linux 13BPT
  70. 70. x86 is very tankaful architecture! (and, Linux too)
  71. 71. Thank you for my tanking!
  72. 72. Comments While EAX first set as zero increases every section by the inc instruction, the value of EAX was diverted and other parameters are set. This seems to be the flow of a brook. There is a rhythm which is skipped in a mnemonic like "push-pop-push-inc, push-push-inc" and "push-pop-pop-inc, push-push-inc". The sight of the children who play the side of a brook is made to consider. The theme the "summer vacation" is often expressed.
  73. 73. Comments While EAX first set as zero increases every section by the inc instruction, the value of EAX was diverted and other parameters are set. This seems to be the flow of a brook. There is a rhythm which is skipped in a mnemonic like "push-pop-push-inc, push-push-inc" and "push-pop-pop-inc, push-push-inc". The sight of the children who play the side of a brook is made to consider. The theme the "summer vacation" is often expressed.
  74. 74. Comments While EAX first set as zero increases every section by the inc instruction, the value of EAX was diverted and other parameters are set. This seems to be the flow of a brook. There is a rhythm which is skipped in a mnemonic like "push-pop-push-inc, push-push-inc" and "push-pop-pop-inc, push-push-inc". The sight of the children who play the side of a brook is made to consider. The theme the "summer vacation" is often expressed.
  75. 75. Comments While EAX first set as zero increases every section by the inc instruction, the value of EAX was diverted and other parameters are set. This seems to be the flow of a brook. There is a rhythm which is skipped in a mnemonic like "push-pop-push-inc, push-push-inc" and "push-pop-pop-inc, push-push-inc". The sight of the children who play the side of a brook is made to consider. The theme the "summer vacation" is often expressed.
  76. 76. First Information
  77. 77. SECCON 2013 SECCON 2013 SECCON 2013 SECCON 2013
  78. 78. Contest and competitive show of Assembly Language Tanka (in SECCON Nagano, Oct.2013)
  79. 79. それならば、 これもできるだろうと いうことで
  80. 80. アセンブラ川柳
  81. 81. 6a 48 89 e5 90 6a 01 55 6a 02 50 90 6a 04 58 cd 80
  82. 82. 実行結果
  83. 83.
  84. 84. 1文字が せいいっぱいでした 下の句が無いと けっこう難しい
  85. 85. まてよ
  86. 86. ということは
  87. 87. こういうのも 可能ということか
  88. 88. アセンブラ かるた
  89. 89. 作ってみた
  90. 90. 68 a5 f3 a5 b0 68 a1 bc a5 ea 90 90 68 a5 d5 a5 a3 89 e5 6a 0c 55 6a 02 50 90 6a 04 58 cd 80 68 00 00 a5 a2 68 a5 bb a5 f3 90 90 68 a5 d6 a5 e9 89 e5 6a 0c 55 6a 02 50 90 6a 04 58 cd 80 実行 → フィーリング 実行 → ブラセンア
  91. 91. しかし問題あり
  92. 92. バイナリダンプを 見ると
  93. 93. 00000000 68 a5 f3 a5 b0 68 a1 bc |hングhー| 00000008 a5 ea 90 90 68 a5 d5 a5 |リ..hフ| 00000010 a3 89 e5 6a 0c 55 6a 02 |.j.Uj.| 00000018 50 90 6a 04 58 cd 80 |P.j.X.| 00000000 68 00 00 a5 a2 68 a5 bb |h..アhセ| 00000008 a5 f3 90 90 68 a5 d6 a5 |ン..hブ| 00000010 e9 89 e5 6a 0c 55 6a 02 |.j.Uj.| 00000018 50 90 6a 04 58 cd 80 |P.j.X.|
  94. 94. 00000000 68 a5 f3 a5 b0 68 a1 bc |hングhー| 00000008 a5 ea 90 90 68 a5 d5 a5 |リ..hフ| 00000010 a3 89 e5 6a 0c 55 6a 02 |.j.Uj.| 00000018 50 90 6a 04 58 cd 80 |P.j.X.| 00000000 68 00 00 a5 a2 68 a5 bb |h..アhセ| 00000008 a5 f3 90 90 68 a5 d6 a5 |ン..hブ| 00000010 e9 89 e5 6a 0c 55 6a 02 |.j.Uj.| 00000018 50 90 6a 04 58 cd 80 |P.j.X.|
  95. 95. 読み札を 読み上げた時点で 取り札が わかってしまう
  96. 96. これでは 競技にできない
  97. 97. xorにかけて 難読化 してみる
  98. 98. b8 5b 0c 5a 29 f7 d8 50 b8 5b 5d 5a 44 (字余り) f7 d8 50 89 e5 6a 08 55 6a 02 50 90 90 90 6a 04 58 cd 80
  99. 99. 実行結果
  100. 100. アセンブ
  101. 101. 4文字が せいいっぱい でした
  102. 102. バイナリダンプは
  103. 103. 00000000 b8 5b 0c 5a 29 f7 d8 50 |[.Z)P| 00000008 b8 5b 5d 5a 44 f7 d8 50 |[]ZDP| 00000010 89 e5 6a 08 55 6a 02 50 |.j.Uj.P| 00000018 90 90 90 6a 04 58 cd 80 |...j.X.|
  104. 104. これなら 読めまい
  105. 105. ふだんは趣味で こんなことを やっています
  106. 106. GCCが対応している CPUアーキテクチャの アセンブラを 片っ端から出力させて 片っ端から読んでみる
  107. 107. この技術を アセンブラ短歌に 活かしたい
  108. 108. こんな感じmov 0xfff10, #72 mov a, #108 mov 0xfff10, #101 mov 0xfff10, a mov 0xfff10, a mov 0xfff10, #111 mov a, #32 mov 0xfff10, a mov 0xfff10, #87 mov a, #111 mov 0xfff10, a mov 0xfff10, #114 nop nop上の句 下の句
  109. 109. こんな かんじ
  110. 110. 実行結果は
  111. 111. SoftwareDesign誌 懐かしの連載 「全国津々浦々! 勉強会&イベント 探訪記」
  112. 112. 電子書籍に なります!
  113. 113. 電子書籍に なります! した!
  114. 114. 達人出版会
  115. 115. TechLIONも 収録されてます! (vol.1〜4)
  116. 116. 高橋さん ありがとう ございます (深謝)
  117. 117. あともうひとつ
  118. 118. マイナビ すげえ
  119. 119. タイトル 「我思う」 詠み人:私
  120. 120. 鑑賞ポイント
  121. 121. 実はQuineに なってます
  122. 122. Quineとは 自分自身を出力する プログラムのことです
  123. 123. つまり
  124. 124. これを実行すると
  125. 125. これが出力されます
  126. 126. さらに 機械語コードに 注目!
  127. 127. "QUINE"の 5文字が 埋め込んで あります
  128. 128. つまり
  129. 129. Quineにより 「QUINE」と 出力される!
  130. 130. 総評 Quineにより「QUINE」と出力させていることは, 内面 をさらけ出した上で「私を見ろ!」「私は私 だ!」と言っているような 強い自我と 誇りの高さ, 情熱を感じさせ, タイトルの「我思う」にふさわし い作品になっています. 言いたいことを言った後は retでなくexitシステムコールで 終わっていることも 過去を振り返らない 意志の強さ が感じられてい さぎ良く, 一本筋 の通っている作品と言うことが できるでしょう.
  131. 131. 総評 Quineにより「QUINE」と出力させていることは, 内面 をさらけ出した上で「私を見ろ!」「私は私 だ!」と言っているような 強い自我と 誇りの高さ, 情熱を感じさせ, タイトルの「我思う」にふさわし い作品になっています. 言いたいことを言った後は retでなくexitシステムコールで 終わっていることも 過去を振り返らない 意志の強さ が感じられてい さぎ良く, 一本筋 の通っている作品と言うことが できるでしょう.
  132. 132. 総評 Quineにより「QUINE」と出力させていることは, 内面 をさらけ出した上で「私を見ろ!」「私は私 だ!」と言っているような 強い自我と 誇りの高さ, 情熱を感じさせ, タイトルの「我思う」にふさわし い作品になっています. 言いたいことを言った後は retでなくexitシステムコールで 終わっていることも 過去を振り返らない 意志の強さ が感じられてい さぎ良く, 一本筋 の通っている作品と言うことが できるでしょう.
  133. 133. 総評 Quineにより「QUINE」と出力させていることは, 内面 をさらけ出した上で「私を見ろ!」「私は私 だ!」と言っているような 強い自我と 誇りの高さ, 情熱を感じさせ, タイトルの「我思う」にふさわし い作品になっています. 言いたいことを言った後は retでなくexitシステムコールで 終わっていることも 過去を振り返らない 意志の強さ が感じられてい さぎ良く, 一本筋 の通っている作品と言うことが できるでしょう.
  134. 134. 総評 Quineにより「QUINE」と出力させていることは, 内面 をさらけ出した上で「私を見ろ!」「私は私 だ!」と言っているような 強い自我と 誇りの高さ, 情熱を感じさせ, タイトルの「我思う」にふさわし い作品になっています. 言いたいことを言った後は retでなくexitシステムコールで 終わっていることも 過去を振り返らない 意志の強さ が感じられてい さぎ良く, 一本筋 の通っている作品と言うことが できるでしょう.
  135. 135. 総評 Quineにより「QUINE」と出力させていることは, 内面 をさらけ出した上で「私を見ろ!」「私は私 だ!」と言っているような 強い自我と 誇りの高さ, 情熱を感じさせ, タイトルの「我思う」にふさわし い作品になっています. 言いたいことを言った後は retでなくexitシステムコールで 終わっていることも 過去を振り返らない 意志の強さ が感じられてい さぎ良く, 一本筋 の通っている作品と言うことが できるでしょう.
  136. 136. 総評 Quineにより「QUINE」と出力させていることは, 内面 をさらけ出した上で「私を見ろ!」「私は私 だ!」と言っているような 強い自我と 誇りの高さ, 情熱を感じさせ, タイトルの「我思う」にふさわし い作品になっています. 言いたいことを言った後は retでなくexitシステムコールで 終わっていることも 過去を振り返らない 意志の強さ が感じられてい さぎ良く, 一本筋 の通っている作品と言うことが できるでしょう.
  137. 137. バイナリカレンダー 持ってきてます
  138. 138. こんなの です
  139. 139. ほしいかたには あげます お声がけください
  140. 140. さて本題
  141. 141. そんな アセンブラ短歌 ですが
  142. 142. いちおう セキュリティ教育の 目的があります (詳しくはHP参照) http://kozos.jp/asm-tanka/
  143. 143. 機械語コードは こんな感じ
  144. 144. SECCONとは何か セキュリティ競技の コンテストです
  145. 145. 昨年度はCTFという 競技大会が メインでしたが
  146. 146. 今年度のSECCONでは 様々なコンテストが 行われています

×