SlideShare a Scribd company logo
1 of 41
Download to read offline
素晴らしきメガデモの世界

    SECCON 実行委員
   松田和樹 (eagle0wl)

    Twitter : eagle0wl
        2012/11/03
メガ
デモ
メガデモってなんぞ?
●   リアルタイムに美しいグラフィックや音楽を生成・表示する
    プログラム




    1
            fr-041:debris. by farbrausch
    基本的に実行ファイルとして動作する
    →3Dベンチマークソフトのような認識でおk
デモシーンって?
●   1980年代ごろに北欧で発生したクラックトロ(cracktro)
    が発祥といわれており、現在も続いている文化、コミュニ
    ティのこと




            Settler 7 Cracktro by Razor1911
クラックトロってなんなのさ?
●   ゲームソフトのクレジット表記を
    自分の署名に書き換えたもの
     → こちらで言うところの Kracking
●   この『署名』は、徐々に高度なプログラミング技術や独自の表
    現技法で”魅せる”方向に発展
    → イントロ(後述)につながる
●   この『署名』を友人間で”見せる”行為は、やがてコミュニティ
    を形成するようになる
    → デモパーティに発展

            スタート地点はグレーだったが、

               やがて独自の文化を形成
デモの種類(の一部)
●   デモ(Demo)
    リアルタイムに美しいグラフィックや音楽を生成・表示するプログラム。
    それ以外に特に制限はない

●   メガデモ(Megademo)
    ファイルサイズが1MB以内のものを指すことがある
    (日本では総称として”メガデモ”という言葉が使われている)

●   イントロ(Intro)
    上記デモ(Demo)にファイルサイズの制約を加えたもの
     64KB, 4KB, 1KB, 256B, 128B
     etc...

                    今回は
          セキュリティクラスタによく刺さる(と思う)
             イントロ(Intro)を紹介します
Eleveted
(4K Intro)
Elevated (4K Intro)
●   美しい景観をわずか4096バイトの実行ファイルで表現している。
    それも音楽つき。
●   国内ニュースサイトでも話題になった
     




             Elevated by RGBA and TBC
『Elevated』を実際に観てみよう!

                4K Intro
   本当はここでプログラムを実行するべきですが、
  ビデオキャプチャされたYoutubeの動画を再生します。

          私のノートPCでは悲鳴が上がります。
            ファイルサイズは極小なのに
         リアルタイムでレンダリングしているので
          高いマシンスペックが要求されます。


      http://www.pouet.net/prod.php?which=52938
Puls
B0   13   53   BA   C8   03   CD   10   88   D8   84   CB   7A   05   F6   E8
C1   E8   07   F6   EB   88   E0   EE   B2   C9   E2   EC   B1   03   4B   75
E9   68   CE   9F   07   B7   56   DB   E3   83   00   58   DF   00   D9   FB
DC   F9   DF   00   D8   0C   D9   FE   DE   0C   66   5A   06   55   60   89
1F   8B   05   DF   05   F7   E8   29   17   4F   7B   F5   DF   07   66   81
05   CD   CC   00   00   D8   CC   D9   C0   D8   CE   D9   CA   D8   CD   DC
EA   D8   CE   DE   C1   D9   CA   47   7B   EB   4F   6B   10   0A   DF   19
89   17   02   34   00   FB   73   F6   99   B4   E6   11   D9   E8   15   00
28   CC   D5   04   04   46   89   45   FC   61   45   26   88   02   75   AE
E4   60   48   75   92   B3   00   8B   29   D3   FD   31   D5   01   2F   00
FB   73   F4   D6   DF   10   51   D3   E9   80   C5   25   8B   10   F7   18
69   E8   00   80   2B   29   79   02   F7   DD   D1   ED   01   EA   89   2F
00   FB   73   EC   39   CA   40   72   25   B3   02   7A   DF   2B   10   40
2B   10   80   EE   60   6B   D2   0D   8B   14   70   02   40   99   2B   2F
79   02   F7   DD   01   EA   8B   2F   00   FB   73   F2   39   CA   59   19
D2   F5   18   D1   10   D1   80   F9   06   73   04   00   D4   75   96   C3
Puls (256B Intro)
●   もはや魔術の世界
    256バイトのプログラムで絵が動いている!
     ソースコード(アセンブリ言語)が公開されてるよ! (笑)




                 Puls by Rrrola
『Puls』を実際に観てみよう!

             256 Intro
 本当はここでプログラムを実行するべきですが、
ビデオキャプチャされたYoutubeの動画を再生します。



    http://www.pouet.net/prod.php?which=53816
日本における
デモシーン
日本におけるデモシーン
●   日本には欧州のようなデモシーンはなかった
●   2chねらーの有志が立ち上げたオンラインデモパーティ
    『2chParty』でメガデモが発表される(2001~2009)
●   これらは demoscene.jp などで確認できる
Tokyo Demo Fest
●   2011年、2chの『メガデモを語る』スレの有志により
    オフラインイベントが開催される
●   日本のデモシーンにおける大きな一歩




                     http://tokyo-demo-fest.jpn.org/2011/
欧州に斬りこんだ和製イントロ
●   Function 2012(ハンガリーのデモパーティ)




                              http://2012.function.hu/
欧州に斬りこんだ和製イントロ
●   Function 2012(ハンガリーのデモパーティ)
    日本人によるイントロ(64K Intro)が出展される
●   64キロバイトにジャパニメーション&歌唱合成(VOCALID的なもの)
    を盛り込んだ、欧州ではまず見られないスタイル




             candy ~TDF2013 Invitation~
candy TDF2013 Invitation (64K Intro)

●   Intro部門で優勝
    →日本人によるコンポ優勝は快挙




            candy ~TDF2013 Invitation~
『candy TDF2013 Invitation』を
     実際に見てみよう!

               64K Intro
   本当はここでプログラムを実行するべきですが、
  ビデオキャプチャされたYoutubeの動画を再生します。

          私のノートPCでは悲鳴が上がります。
            ファイルサイズは極小なのに
         リアルタイムでレンダリングしているので
          高いマシンスペックが要求されます。


      http://www.pouet.net/prod.php?which=60278
イントロを
支える技術
イントロを支える技術
●   パッカー
    実行ファイルを実行可能なまま圧縮するツール
●   期待する効果
    実行ファイルサイズの縮小(packer)
     →パッカー本来の用途
      イントロとしては最重要課題


    プログラム解析の妨害(protector)
     →セキュリティクラスタ的にはこっち
俺らにとってのパッカーって何?
●   セキュリティクラスタ的思考で思いついたpacker
    …というよりprotector

    Armadillo, ASPack, ASProtect, Dropper, FSG, Mew,
    NeoLite, PE Compact, PELock, SVK Protector, tElock,
    Themida, UPX, Yoda's Protector …
     (古いとか言うな)

    商用・非商用含め100種類オーバーどころではないので打ち止め


●   モノがモノなので、cracktroが同梱されていたりくっついてい
    たりする
イントロに好まれるパッカー
●   すでにデファクトスタンダードがある
    ●   4KB : Crinkler
    ●   64KB : kkrunchy
        –   kkrunchyはコンポでも使用が推奨されている
kkrunchy
●   無償で入手可能
    GitHubでも公開されてます
データ圧縮至上主義
●   kkrunchy
    ●   コードセクション圧縮みたいなヤワなものではない
    ●   x86コードを圧縮が効くように事前に変換
    ●   もちろんx86コードに特化されている


●   さらに小さくするためにやりすぎた人たち
    ●   リンカを作る(Crinkler)
    ●   コンパイラから作る(IL4 Lisp-ahtaval)


                                       参考:Executable Packerの構造と解釈 by 301
                   http://tokyo-demo-fest.jpn.org/2011/seminar/2011/301-siep.pdf
求めすぎることによる弊害
●   MZ / PE ヘッダおかしくね?
    少しでも小さくするために、ヘッダ領域まで切り詰めるパッカーがある

    ●   通常あり得ないヘッダなので、これだけでマルウェア(パッカー)扱い
        されてしまうことは多々ある(こればかりはkkrunchyだけの問題ではない)
VirusTotalの反応
●   全く無害な helloworld.exe を kkrunchy でパックして
    VirusTotal でチェックしてみた
VirusTotalの反応
●   結果 13/44   (2012/11/07時点のもの)
    有名どころは反応しないが、それでもトータルとしては多い
TokyoDemoFest
     2013
Tokyo Demo Fest 2013
●   2013年02月09日~10日 東京(飯田橋)で開催
    日本唯一のデモパーティ




                        http://tokyo-demo-fest.jpn.org/
Tokyo Demo Fest 2013
●   candyの作者 q さんがメインオーガナイザを務めています。
    これは頼りになる(TDFウェブサイトより)ね!




                        http://tokyo-demo-fest.jpn.org/
Tokyo Demo Fest 2013
●   今回のスライドも氏に煽られて作成しました。
Tokyo Demo Fest 2013
●   今回のスライドも氏に煽られて作成しました。
    嘘です。candyの使用承諾&LTのアドバイスもいただきましたm(_ _)m
Tokyo Demo Fest 2013

    少しでも興味を持ったなら、
       ぜひ行ってみよう!
        じつは自分も初参加(になる予定)




                    http://tokyo-demo-fest.jpn.org/
pouet.net
www.pouet.net
●   メガデモの総本山
    ほとんどのデモはここから入手可能
MoleMan 2
Demoscene - The Art of the Algorithms
Moleman 2
Demoscene - The Art of the Algorithms

●   ハンガリーで制作されたデモシーンのドキュメンタリー(90分)
    なんと日本語字幕付きで(正規に)公開されている
Moleman 2
Demoscene - The Art of the Algorithms

●   ハンガリーで制作されたデモシーンのドキュメンタリー(90分)
    なんと日本語字幕付きで(正規に)公開されている

●   デモシーンを知り尽くした構成・演出でとにかく必見
    www.youtube.com/watch?v=iRkZcTg1JWU
Any Questions?

More Related Content

What's hot

ゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめSugimoto Chizuru
 
RenderTextureの正しいα値は?
RenderTextureの正しいα値は?RenderTextureの正しいα値は?
RenderTextureの正しいα値は?KLab Inc. / Tech
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けモノビット エンジン
 
GLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめGLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめYoichi Hirata
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてalwei
 
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装Koji Morikawa
 
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編Unity Technologies Japan K.K.
 
ゲームエンジンとMVC
ゲームエンジンとMVCゲームエンジンとMVC
ゲームエンジンとMVCAimingStudy
 
コールバックと戦う話
コールバックと戦う話コールバックと戦う話
コールバックと戦う話torisoup
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門demuyan
 
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回Yoshiki Hayama
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxShota Shinogi
 
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチYoshiki Hayama
 
UnityでUI開発を高速化した件
UnityでUI開発を高速化した件UnityでUI開発を高速化した件
UnityでUI開発を高速化した件Grenge, Inc.
 
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理DADA246
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しようUnity Technologies Japan K.K.
 
Assembly Definition あれやこれ
Assembly Definition あれやこれAssembly Definition あれやこれ
Assembly Definition あれやこれNakanoYosuke1
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例sairoutine
 

What's hot (20)

ゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめ
 
RenderTextureの正しいα値は?
RenderTextureの正しいα値は?RenderTextureの正しいα値は?
RenderTextureの正しいα値は?
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
GLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめGLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめ
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
 
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装
 
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
 
Unityと.NET
Unityと.NETUnityと.NET
Unityと.NET
 
ゲームエンジンとMVC
ゲームエンジンとMVCゲームエンジンとMVC
ゲームエンジンとMVC
 
コールバックと戦う話
コールバックと戦う話コールバックと戦う話
コールバックと戦う話
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門
 
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
 
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
 
UnityでUI開発を高速化した件
UnityでUI開発を高速化した件UnityでUI開発を高速化した件
UnityでUI開発を高速化した件
 
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
 
Assembly Definition あれやこれ
Assembly Definition あれやこれAssembly Definition あれやこれ
Assembly Definition あれやこれ
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
 

Similar to 素晴らしきメガデモの世界

Jenkins に XFD を追加してみると
Jenkins に XFD を追加してみるとJenkins に XFD を追加してみると
Jenkins に XFD を追加してみるとKiro Harada
 
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機Tetsuyuki Kobayashi
 
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオンAzure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオンYasuaki Matsuda
 
初心者向けMacユーザー勉強会
初心者向けMacユーザー勉強会初心者向けMacユーザー勉強会
初心者向けMacユーザー勉強会Takuma Morikawa
 
初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウKentarou Mukunasi
 
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)Kenichiro MATOHARA
 
20151101 blender python_3dprint
20151101 blender python_3dprint20151101 blender python_3dprint
20151101 blender python_3dprintTakuro Wada
 
2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmf2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmfAtomu Hidaka
 
Windows 11とNPUで実現するWindowsのAI
Windows 11とNPUで実現するWindowsのAIWindows 11とNPUで実現するWindowsのAI
Windows 11とNPUで実現するWindowsのAITomokazu Kizawa
 
Algyan@how to dragon board410c20170930
Algyan@how to dragon board410c20170930Algyan@how to dragon board410c20170930
Algyan@how to dragon board410c20170930Hiroshi Hasegawa
 
ゲームエンジン導入セミナー【UDK編】
ゲームエンジン導入セミナー【UDK編】ゲームエンジン導入セミナー【UDK編】
ゲームエンジン導入セミナー【UDK編】Junya "Jun" Shimoda
 
OSC Nagoya NETMF 160528
OSC Nagoya NETMF 160528OSC Nagoya NETMF 160528
OSC Nagoya NETMF 160528Atomu Hidaka
 
20201028 Visual IoTLT vol.5 kitazaki
20201028 Visual IoTLT vol.5 kitazaki20201028 Visual IoTLT vol.5 kitazaki
20201028 Visual IoTLT vol.5 kitazakiAyachika Kitazaki
 
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めCell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めYou&I
 
わんくま名古屋#28(20130824) c#で、ライフゲームを高速化してみるよ
わんくま名古屋#28(20130824) c#で、ライフゲームを高速化してみるよわんくま名古屋#28(20130824) c#で、ライフゲームを高速化してみるよ
わんくま名古屋#28(20130824) c#で、ライフゲームを高速化してみるよYasuhiko Yamamoto
 
Microsoft Copilot Studio.pdf
Microsoft Copilot Studio.pdfMicrosoft Copilot Studio.pdf
Microsoft Copilot Studio.pdfTomokazu Kizawa
 
開発ツールさくっと作ってみた発表資料
開発ツールさくっと作ってみた発表資料開発ツールさくっと作ってみた発表資料
開発ツールさくっと作ってみた発表資料三七男 山本
 
Hyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオン
Hyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオンHyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオン
Hyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオン健一 茂木
 
Osc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamagutiOsc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamagutiNoriyuki Yamaguchi
 

Similar to 素晴らしきメガデモの世界 (20)

Jenkins に XFD を追加してみると
Jenkins に XFD を追加してみるとJenkins に XFD を追加してみると
Jenkins に XFD を追加してみると
 
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
 
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオンAzure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
 
ゲームエンジン導入セミナー【UDK編】
ゲームエンジン導入セミナー【UDK編】 ゲームエンジン導入セミナー【UDK編】
ゲームエンジン導入セミナー【UDK編】
 
初心者向けMacユーザー勉強会
初心者向けMacユーザー勉強会初心者向けMacユーザー勉強会
初心者向けMacユーザー勉強会
 
初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ
 
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
 
20151101 blender python_3dprint
20151101 blender python_3dprint20151101 blender python_3dprint
20151101 blender python_3dprint
 
2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmf2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmf
 
Windows 11とNPUで実現するWindowsのAI
Windows 11とNPUで実現するWindowsのAIWindows 11とNPUで実現するWindowsのAI
Windows 11とNPUで実現するWindowsのAI
 
Algyan@how to dragon board410c20170930
Algyan@how to dragon board410c20170930Algyan@how to dragon board410c20170930
Algyan@how to dragon board410c20170930
 
ゲームエンジン導入セミナー【UDK編】
ゲームエンジン導入セミナー【UDK編】ゲームエンジン導入セミナー【UDK編】
ゲームエンジン導入セミナー【UDK編】
 
OSC Nagoya NETMF 160528
OSC Nagoya NETMF 160528OSC Nagoya NETMF 160528
OSC Nagoya NETMF 160528
 
20201028 Visual IoTLT vol.5 kitazaki
20201028 Visual IoTLT vol.5 kitazaki20201028 Visual IoTLT vol.5 kitazaki
20201028 Visual IoTLT vol.5 kitazaki
 
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めCell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始め
 
わんくま名古屋#28(20130824) c#で、ライフゲームを高速化してみるよ
わんくま名古屋#28(20130824) c#で、ライフゲームを高速化してみるよわんくま名古屋#28(20130824) c#で、ライフゲームを高速化してみるよ
わんくま名古屋#28(20130824) c#で、ライフゲームを高速化してみるよ
 
Microsoft Copilot Studio.pdf
Microsoft Copilot Studio.pdfMicrosoft Copilot Studio.pdf
Microsoft Copilot Studio.pdf
 
開発ツールさくっと作ってみた発表資料
開発ツールさくっと作ってみた発表資料開発ツールさくっと作ってみた発表資料
開発ツールさくっと作ってみた発表資料
 
Hyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオン
Hyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオンHyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオン
Hyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオン
 
Osc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamagutiOsc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamaguti
 

More from eagle0wl

レトロゲーム勉強会#09 ゲームボーイとゲームボーイアドバンスをカスタマイズしてみた
レトロゲーム勉強会#09 ゲームボーイとゲームボーイアドバンスをカスタマイズしてみたレトロゲーム勉強会#09 ゲームボーイとゲームボーイアドバンスをカスタマイズしてみた
レトロゲーム勉強会#09 ゲームボーイとゲームボーイアドバンスをカスタマイズしてみたeagle0wl
 
テトリミノの偏り補正から見るテトリスの歴史
テトリミノの偏り補正から見るテトリスの歴史テトリミノの偏り補正から見るテトリスの歴史
テトリミノの偏り補正から見るテトリスの歴史eagle0wl
 
和製レトロゲームの珍翻訳・良翻訳 (Web公開版) 訂正バージョン
和製レトロゲームの珍翻訳・良翻訳 (Web公開版) 訂正バージョン和製レトロゲームの珍翻訳・良翻訳 (Web公開版) 訂正バージョン
和製レトロゲームの珍翻訳・良翻訳 (Web公開版) 訂正バージョンeagle0wl
 
レトロブライトを試してみた
レトロブライトを試してみたレトロブライトを試してみた
レトロブライトを試してみたeagle0wl
 
主にマジコンの話を振り返る(検閲バージョン)
主にマジコンの話を振り返る(検閲バージョン)主にマジコンの話を振り返る(検閲バージョン)
主にマジコンの話を振り返る(検閲バージョン)eagle0wl
 
Live Scoring Visualizer @JOYC2017Final Report
Live Scoring Visualizer @JOYC2017Final ReportLive Scoring Visualizer @JOYC2017Final Report
Live Scoring Visualizer @JOYC2017Final Reporteagle0wl
 

More from eagle0wl (6)

レトロゲーム勉強会#09 ゲームボーイとゲームボーイアドバンスをカスタマイズしてみた
レトロゲーム勉強会#09 ゲームボーイとゲームボーイアドバンスをカスタマイズしてみたレトロゲーム勉強会#09 ゲームボーイとゲームボーイアドバンスをカスタマイズしてみた
レトロゲーム勉強会#09 ゲームボーイとゲームボーイアドバンスをカスタマイズしてみた
 
テトリミノの偏り補正から見るテトリスの歴史
テトリミノの偏り補正から見るテトリスの歴史テトリミノの偏り補正から見るテトリスの歴史
テトリミノの偏り補正から見るテトリスの歴史
 
和製レトロゲームの珍翻訳・良翻訳 (Web公開版) 訂正バージョン
和製レトロゲームの珍翻訳・良翻訳 (Web公開版) 訂正バージョン和製レトロゲームの珍翻訳・良翻訳 (Web公開版) 訂正バージョン
和製レトロゲームの珍翻訳・良翻訳 (Web公開版) 訂正バージョン
 
レトロブライトを試してみた
レトロブライトを試してみたレトロブライトを試してみた
レトロブライトを試してみた
 
主にマジコンの話を振り返る(検閲バージョン)
主にマジコンの話を振り返る(検閲バージョン)主にマジコンの話を振り返る(検閲バージョン)
主にマジコンの話を振り返る(検閲バージョン)
 
Live Scoring Visualizer @JOYC2017Final Report
Live Scoring Visualizer @JOYC2017Final ReportLive Scoring Visualizer @JOYC2017Final Report
Live Scoring Visualizer @JOYC2017Final Report
 

素晴らしきメガデモの世界

  • 1. 素晴らしきメガデモの世界 SECCON 実行委員 松田和樹 (eagle0wl) Twitter : eagle0wl 2012/11/03
  • 3. メガデモってなんぞ? ● リアルタイムに美しいグラフィックや音楽を生成・表示する プログラム 1 fr-041:debris. by farbrausch 基本的に実行ファイルとして動作する →3Dベンチマークソフトのような認識でおk
  • 4. デモシーンって? ● 1980年代ごろに北欧で発生したクラックトロ(cracktro) が発祥といわれており、現在も続いている文化、コミュニ ティのこと Settler 7 Cracktro by Razor1911
  • 5. クラックトロってなんなのさ? ● ゲームソフトのクレジット表記を 自分の署名に書き換えたもの  → こちらで言うところの Kracking ● この『署名』は、徐々に高度なプログラミング技術や独自の表 現技法で”魅せる”方向に発展 → イントロ(後述)につながる ● この『署名』を友人間で”見せる”行為は、やがてコミュニティ を形成するようになる → デモパーティに発展 スタート地点はグレーだったが、 やがて独自の文化を形成
  • 6. デモの種類(の一部) ● デモ(Demo) リアルタイムに美しいグラフィックや音楽を生成・表示するプログラム。 それ以外に特に制限はない ● メガデモ(Megademo) ファイルサイズが1MB以内のものを指すことがある (日本では総称として”メガデモ”という言葉が使われている) ● イントロ(Intro) 上記デモ(Demo)にファイルサイズの制約を加えたもの  64KB, 4KB, 1KB, 256B, 128B  etc... 今回は セキュリティクラスタによく刺さる(と思う) イントロ(Intro)を紹介します
  • 8. Elevated (4K Intro) ● 美しい景観をわずか4096バイトの実行ファイルで表現している。 それも音楽つき。 ● 国内ニュースサイトでも話題になった   Elevated by RGBA and TBC
  • 9. 『Elevated』を実際に観てみよう! 4K Intro 本当はここでプログラムを実行するべきですが、 ビデオキャプチャされたYoutubeの動画を再生します。 私のノートPCでは悲鳴が上がります。 ファイルサイズは極小なのに リアルタイムでレンダリングしているので 高いマシンスペックが要求されます。 http://www.pouet.net/prod.php?which=52938
  • 10. Puls
  • 11. B0 13 53 BA C8 03 CD 10 88 D8 84 CB 7A 05 F6 E8 C1 E8 07 F6 EB 88 E0 EE B2 C9 E2 EC B1 03 4B 75 E9 68 CE 9F 07 B7 56 DB E3 83 00 58 DF 00 D9 FB DC F9 DF 00 D8 0C D9 FE DE 0C 66 5A 06 55 60 89 1F 8B 05 DF 05 F7 E8 29 17 4F 7B F5 DF 07 66 81 05 CD CC 00 00 D8 CC D9 C0 D8 CE D9 CA D8 CD DC EA D8 CE DE C1 D9 CA 47 7B EB 4F 6B 10 0A DF 19 89 17 02 34 00 FB 73 F6 99 B4 E6 11 D9 E8 15 00 28 CC D5 04 04 46 89 45 FC 61 45 26 88 02 75 AE E4 60 48 75 92 B3 00 8B 29 D3 FD 31 D5 01 2F 00 FB 73 F4 D6 DF 10 51 D3 E9 80 C5 25 8B 10 F7 18 69 E8 00 80 2B 29 79 02 F7 DD D1 ED 01 EA 89 2F 00 FB 73 EC 39 CA 40 72 25 B3 02 7A DF 2B 10 40 2B 10 80 EE 60 6B D2 0D 8B 14 70 02 40 99 2B 2F 79 02 F7 DD 01 EA 8B 2F 00 FB 73 F2 39 CA 59 19 D2 F5 18 D1 10 D1 80 F9 06 73 04 00 D4 75 96 C3
  • 12. Puls (256B Intro) ● もはや魔術の世界 256バイトのプログラムで絵が動いている! ソースコード(アセンブリ言語)が公開されてるよ! (笑) Puls by Rrrola
  • 13. 『Puls』を実際に観てみよう! 256 Intro 本当はここでプログラムを実行するべきですが、 ビデオキャプチャされたYoutubeの動画を再生します。 http://www.pouet.net/prod.php?which=53816
  • 15. 日本におけるデモシーン ● 日本には欧州のようなデモシーンはなかった ● 2chねらーの有志が立ち上げたオンラインデモパーティ 『2chParty』でメガデモが発表される(2001~2009) ● これらは demoscene.jp などで確認できる
  • 16. Tokyo Demo Fest ● 2011年、2chの『メガデモを語る』スレの有志により オフラインイベントが開催される ● 日本のデモシーンにおける大きな一歩 http://tokyo-demo-fest.jpn.org/2011/
  • 17. 欧州に斬りこんだ和製イントロ ● Function 2012(ハンガリーのデモパーティ) http://2012.function.hu/
  • 18. 欧州に斬りこんだ和製イントロ ● Function 2012(ハンガリーのデモパーティ) 日本人によるイントロ(64K Intro)が出展される ● 64キロバイトにジャパニメーション&歌唱合成(VOCALID的なもの) を盛り込んだ、欧州ではまず見られないスタイル candy ~TDF2013 Invitation~
  • 19. candy TDF2013 Invitation (64K Intro) ● Intro部門で優勝 →日本人によるコンポ優勝は快挙 candy ~TDF2013 Invitation~
  • 20. 『candy TDF2013 Invitation』を 実際に見てみよう! 64K Intro 本当はここでプログラムを実行するべきですが、 ビデオキャプチャされたYoutubeの動画を再生します。 私のノートPCでは悲鳴が上がります。 ファイルサイズは極小なのに リアルタイムでレンダリングしているので 高いマシンスペックが要求されます。 http://www.pouet.net/prod.php?which=60278
  • 22. イントロを支える技術 ● パッカー 実行ファイルを実行可能なまま圧縮するツール ● 期待する効果 実行ファイルサイズの縮小(packer)  →パッカー本来の用途   イントロとしては最重要課題 プログラム解析の妨害(protector)  →セキュリティクラスタ的にはこっち
  • 23. 俺らにとってのパッカーって何? ● セキュリティクラスタ的思考で思いついたpacker …というよりprotector Armadillo, ASPack, ASProtect, Dropper, FSG, Mew, NeoLite, PE Compact, PELock, SVK Protector, tElock, Themida, UPX, Yoda's Protector …  (古いとか言うな) 商用・非商用含め100種類オーバーどころではないので打ち止め ● モノがモノなので、cracktroが同梱されていたりくっついてい たりする
  • 24. イントロに好まれるパッカー ● すでにデファクトスタンダードがある ● 4KB : Crinkler ● 64KB : kkrunchy – kkrunchyはコンポでも使用が推奨されている
  • 25. kkrunchy ● 無償で入手可能 GitHubでも公開されてます
  • 26. データ圧縮至上主義 ● kkrunchy ● コードセクション圧縮みたいなヤワなものではない ● x86コードを圧縮が効くように事前に変換 ● もちろんx86コードに特化されている ● さらに小さくするためにやりすぎた人たち ● リンカを作る(Crinkler) ● コンパイラから作る(IL4 Lisp-ahtaval) 参考:Executable Packerの構造と解釈 by 301 http://tokyo-demo-fest.jpn.org/2011/seminar/2011/301-siep.pdf
  • 27. 求めすぎることによる弊害 ● MZ / PE ヘッダおかしくね? 少しでも小さくするために、ヘッダ領域まで切り詰めるパッカーがある ● 通常あり得ないヘッダなので、これだけでマルウェア(パッカー)扱い されてしまうことは多々ある(こればかりはkkrunchyだけの問題ではない)
  • 28. VirusTotalの反応 ● 全く無害な helloworld.exe を kkrunchy でパックして VirusTotal でチェックしてみた
  • 29. VirusTotalの反応 ● 結果 13/44 (2012/11/07時点のもの) 有名どころは反応しないが、それでもトータルとしては多い
  • 31. Tokyo Demo Fest 2013 ● 2013年02月09日~10日 東京(飯田橋)で開催 日本唯一のデモパーティ http://tokyo-demo-fest.jpn.org/
  • 32. Tokyo Demo Fest 2013 ● candyの作者 q さんがメインオーガナイザを務めています。 これは頼りになる(TDFウェブサイトより)ね! http://tokyo-demo-fest.jpn.org/
  • 33. Tokyo Demo Fest 2013 ● 今回のスライドも氏に煽られて作成しました。
  • 34. Tokyo Demo Fest 2013 ● 今回のスライドも氏に煽られて作成しました。 嘘です。candyの使用承諾&LTのアドバイスもいただきましたm(_ _)m
  • 35. Tokyo Demo Fest 2013 少しでも興味を持ったなら、 ぜひ行ってみよう! じつは自分も初参加(になる予定) http://tokyo-demo-fest.jpn.org/
  • 37. www.pouet.net ● メガデモの総本山 ほとんどのデモはここから入手可能
  • 38. MoleMan 2 Demoscene - The Art of the Algorithms
  • 39. Moleman 2 Demoscene - The Art of the Algorithms ● ハンガリーで制作されたデモシーンのドキュメンタリー(90分) なんと日本語字幕付きで(正規に)公開されている
  • 40. Moleman 2 Demoscene - The Art of the Algorithms ● ハンガリーで制作されたデモシーンのドキュメンタリー(90分) なんと日本語字幕付きで(正規に)公開されている ● デモシーンを知り尽くした構成・演出でとにかく必見 www.youtube.com/watch?v=iRkZcTg1JWU