パスワードを忘れた? アカウント作成
142340 story

リバースエンジニアリングのコンテスト、今年も開催 36

ストーリー by soara
腕に覚えあり 部門より

curio 曰く、

ITmediaの記事等によると、ネットエージェントが去年に続いて今年も『リバースエンジニアリングの技術力を競う一般参加型のコンテスト「リバースエンジニアリングチャレンジ」を、9月19日正午~22日午前にインターネット上で開催する。』とのこと。

同社のページには昨年の順位と所要時間も掲示されている。ちなみにタレコミ子は今年ついに連休中の私用ができたので参加できない。しかしそもそも去年の記憶を思い起こすとやっぱり参加することにしか意義がないだろうから、大事な私用が仮にもし万が一なくなったとしても今回はギャラリーとして、連休中に余裕があって腕に自信のあるスーパーな方々の活躍を見守りたいと思う。

でもって、そのスーパーなスキルのひとかけらでもタレコミ子に分けてもらえないだろうか...ほんのちょっとでいいから。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2009年09月12日 10時40分 (#1638757)
    出題前に問題ファイルを公開、答え付き。
  • by Anonymous Coward on 2009年09月12日 11時50分 (#1638778)
    Samba、OpenOffice.orgのMS Office形式扱う部分、Wine、ReactOS、FFmpeg、その他多くのソフトウェアにリバースエンジニアリングの成果が使われています。
    例えばFFmpegの場合、仕組みを解析して数式やアルゴリズムに戻してから効率が良くなるように実装しているので、RE元のライブラリよりも高速なことが多いです。
    日本のREはクラックというかファイル抽出・キー抽出に偏ってるのが残念でしかたありません。もっと、仕組みを分析し仕様化し再実装することを目指してほしいなと思います。
    • by Anonymous Coward on 2009年09月12日 14時24分 (#1638815)

      > 例えばFFmpegの場合、仕組みを解析して数式やアルゴリズムに戻してから効率が良くなるように実装しているので、
      > RE元のライブラリよりも高速なことが多いです。

      動画系のFFmpegに限ってはそんなことする必要ないし、するべきでも無いだろ。
      他に挙げた例と違って、似せたい(互換性を得たい)実装が先にあるわけじゃなくって、
      規格/仕様やアルゴリズムなどが公開されていて、それに対しての様々な先行実装があるんだから。

      > もっと、仕組みを分析し仕様化し再実装することを目指してほしいなと思います。
      REに限っての話としていいたいことはわかりますが、
      FFmpegみたいな規格ものの実装については、そもそもREみたいなアプローチではなく、
      本来の動画理論などに基づいた最適実装を目指してほしいなと思います。

      もちろん、vendor拡張tagや微妙なエンコード時の癖など、規格/仕様にはないが
      出回ってしまっているデータを救済するために、本線のアルゴリズムとは別の目的でREするのは、
      他に挙げている例と同様の事情だと思いますので、必要悪だとは思いますよ。

      まあ、あとは知財リスクてんこ盛りって課題もありますな。
      リファレンスの規格アルゴリズムに対して各社設計/実装レベルで
      いろいろチューニングを施して、知財化している世界なので。

      そもそも大元の規格特許への対応も含めて、
      そういうものとして利用側や配布側が充分注意して対応していくしかないんだろうな...

      親コメント
      • by Anonymous Coward on 2009年09月12日 15時21分 (#1638843)
        例えば仕様の公開されていないIndeo 5は有志がリバースエンジニアリングでこのような形に仕様化しています。
        http://wiki.multimedia.cx/index.php?title=Indeo_5
        同じく仕様の公開されていないVP6はこんな感じです。
        http://wiki.multimedia.cx/index.php?title=On2_VP6
        音声コーデックのWMAはこんな感じ。
        http://wiki.multimedia.cx/index.php?title=Windows_Media_Audio
        同じくALAC。
        http://wiki.multimedia.cx/index.php?title=Apple_Lossless_Audio_Coding
        WavPackもこの通り。
        http://wiki.multimedia.cx/index.php?title=WavPack

        >規格/仕様にはないが出回ってしまっているデータ
        例えばFFmpegに実装されたRealVideo 4.0のデコーダではバギーな公式デコーダの実装に合わせてます。Kostya氏の"should RV40 designers burn in hell?"という質問とMichael氏の"yes"という回答が印象的。
        もう一つ例を。最近FFmpegに実装されたTwinVQデコーダでは、ヤマハのTwinVQエンコーダがバギーなNTTのTwinVQデコーダの実装に最適化されていたということでNTTのデコーダ互換の実装になっています。実装したのはVitor氏で、ソースコードにはvery_broken_opという関数があったり、"For some unknown reason, NTT decided to code this case differently"とか書かれてたりしています。MPEG-4のTwinVQは今後別に実装されるはず。

        >知財リスクてんこ盛り
        http://www.ffmpeg.org/legal.html
        FFmpeg側のスタンスとしては特許の問題は知らぬ存ぜぬ国によるで。ソースコードでの配布だと特許の問題ないですしね。
        親コメント
        • by Anonymous Coward on 2009年09月12日 17時23分 (#1638863)

          > ソースコードでの配布だと特許の問題ない
          「午後のこ~だ」がソースコードで配布してるのもこれなんだろうけど、
          なんか不思議な話だよね。
          インタプリタ言語とかの場合はどーなるんだろ。

          親コメント
    • 素朴な疑問なんですが,WindowsにしてもOfficeにしても,使用許諾契約書でリバースエンジニアリングは禁止されています.
      それにも関わらず,リバースエンジニアリングが正当な行為であるように書かれていることに疑問を感じます.
      リバースエンジニアリングを禁じること自体が,もっと上位の法律なり憲法なりで禁じられていて,実質的に守る必要がないということなんでしょうか.
      親コメント
      • by Anonymous Coward on 2009年09月13日 16時17分 (#1639057)

        > 素朴な疑問なんですが,
        このあたり参照ですかね。
        http://www.soumunomori.com/column/article/atc-49665/ [soumunomori.com]
        http://www.license-keiyaku.com/softwear/reverseengineering.html [license-keiyaku.com]

        つまり、個人でやるぶん問題ないということです。
        無論、クリーンルーム方式での解析や解析手法などのノウハウの公開は良いですがその製品に関する公開されていない
        解析結果について公開するとトラブルになりかねません。

        #あまり自信が無いのでAC

        親コメント
          • リバースエンジニアリングを行うことの正当性
          • リバースエンジニアリングを使用許諾契約等で禁じることの妥当性

          の二つの論点がありますね.
          日本ではどちらも判例にはなっていない(欧米ではなっている)ので, 最終的にどう判断されるかは不確定ですが, 今のところ以下のような解釈が成されているようです.

          前者は,純粋な研究目的であれば認められることに異論はなさそうです.
          ただ,結果の公開や,クローンの作成はまた別の問題のようです.

          後者については,公正取引委員会の報告書(PDF) [meti.go.jp]が, 日本では最も権威のある?考え方のようです.
          これによると,あるソフトウェアとインターオペラビリティを持つソフトウェアを開発するために,
          そのソフトウェアからインターフェース情報を取り出すことを禁止することは独占禁止法に反する,ということです.

          親コメント
    • by Anonymous Coward
      だから馬鹿な実装者に作らせるのは嫌いなんだ

      最初から上手に作れ
  • by Anonymous Coward on 2009年09月12日 11時14分 (#1638769)
       ∩___∩         |   >今年ついに連休中の私用ができたので
       | ノ\     ヽ        |   >大事な私用が
      /  ●゛  ● |        |
      | ∪  ( _●_) ミ       j
     彡、   |∪|   |        J
    /     ∩ノ ⊃  ヽ
    (  \ / _ノ |  |
    .\ “  /__|  |
      \ /___ /
  • by Anonymous Coward on 2009年09月12日 12時40分 (#1638789)
    今年は寿司屋(金色)が優勝ですよね
  • by Anonymous Coward on 2009年09月12日 18時40分 (#1638880)

    コアダンプの処理は、
    駅員さんが一番技術を持っていると思う。

    ただ、エンジニアリングはしてないと思う。

  • by Anonymous Coward on 2009年09月12日 22時22分 (#1638931)

    過去問は見れないのですか?

    • by ryuuri (4702) on 2009年09月12日 23時17分 (#1638954) 日記
      Googleにお伺いと立てたところ、以下のURLから2008年の問題と回答が参照できました。
      リバースエンジニアリングチャレンジ 2008:NetAgent Co., Ltd. [netagent.co.jp]

      ざっと見た限り、去年は実行形式の提供で、windowsが2問、linuxが2問だったようです。
      どちらも、逆アセンブルできる環境がないと、キツそうですねぇ。
      親コメント
      • by Anonymous Coward

        >どちらも、逆アセンブルできる環境がないと、キツそうですねぇ。

        むしろそれくらい出来ないで、コンテストとして意味をもつ問題ってどういうのでしょう?
        IPAなんかでやってるような、間抜けな選択式穴埋め問題が午前中に数十問、
        午後にようやくまともなテーマ設定だが実用性の無い論述数問って感じでしょうか(笑)

        • > むしろそれくらい出来ないで、コンテストとして意味をもつ問題ってどういうのでしょう?

          まあ、そりゃそうですね(笑

          気になっているのは、今年のコンテストで使用されるのがどの環境かという情報が現時点では見えていないところ。
          そして、去年のコンテストでは、各問題にWindowsとlinuxのどちらか片方のバイナリしか添付されていないところ、ですね。

          今年は、Windows屋さん、linux屋さんのどちらでも出来るように、両方のバイナリを添付して欲いかなぁ、と。

          なんてか。
          Windowsとlinuxの問題が出ているってことは、「Windowsとlinuxの両方の環境を持っていることを要求している」か、もしくは、「これらの環境を0から構築して解析できる能力を期待している」のどちらかに見えます。

          「Windowsとlinuxの両方の環境を持っていることを要求している」だと、何そのピンポイントな大会、と思うのです。
          そんくらいなら、Windowsとlinuxと両方添付されている方がマシかなぁ、と。

          逆に、「これらの環境を0から構築して解析できる能力を期待している」ならば、メジャーな Windows, linuxしかないことに違和感があります。

          これで、MIPSアーキテクチャのitronベースのOSの何かとかでてきたら、手に負えなくなるわけで、Windowsとlinuxが出てくるのは無難な選択なのでしょうが……なんか釈然としないものが。

          そこで、いっそのこと!

          もう、新規でアセンブリ言語を作って、対応するバイナリのコード表を添付。ABIドキュメントもきっちり作りこんで、そのドキュメントを添付。これらの仕様に基づいたバイナリを問題として公開。

          さあ、クロス逆アセンブラを自力で作って挑戦だ!

          ってくらいしてくれれば、公平になりそうな。

          #そして参加者0に。
          親コメント
          • by roto (17040) on 2009年09月13日 6時58分 (#1639001) ホームページ 日記
            環境なんてなくったって、ファイルフォーマットとアーキテクチャの仕様が分かれば、
            バイナリを直接解析したり、自分で簡易逆アセンブラを作ったり。

            # 非常に面倒くさいです。
            親コメント
          • by Anonymous Coward on 2009年09月13日 1時41分 (#1638983)
            コレはあくまでもマルウェアなどの解析を念頭に置いた上でのコンテストです。
            実用性ゼロの仮想環境なんて無意味にも程がありますがな。

            Linuxが対象で困惑する人がいるかもしれませんが、4問目が組み込みである事を思えば何を意図しているかは分りますよね。
            ルータや携帯電話、スマートフォンなどの組み込み機器に進入したバイナリの解析、を想定してるだけでしょう。
            であれば、「そのプラットフォームを普段利用する人」であるかどうかなんて些細な問題です。

            ・・・というかIDA ProってARMなELFまで解析できるんですか・・・
            欲しくなってきた。どうせELF解析なんてしないのに。
            親コメント
          • こんなこともあろうかとWizard98をCDブート可能な状態で保存しておいたのだ。

            いや、なんかちがうぞ。
            親コメント
      • by Anonymous Coward
        元コメさまのコメントにつけるのはお門違いとはわかっているのですが...

        書き言葉ですら Engrish は Hacker な感じじゃないですね。
    • by Anonymous Coward
      元コメントを読んで探したら過去問が見つかったのでやってみました。
      リンクは他の方が貼って下さったので割愛。

      1問目だけ解いて見ましたが、入力値比較用のデータが内部で生成される過程を追いかける問題で、まんまパスワードクラックの問題でした。
      「マルウェアやウイルス等の解析」を掲げるワリには・・・といった印象。
      そりゃこのくらい出来なきゃそういうプログラムの追跡なんて無理だけどさぁ・・・

      模範解答をチラ見したらIDA Pro(シェアウェア)がご登場なさっていたので貧乏人な私としては撤退させていただきました。
      # 素直にめんどくさかった or ELFは触った事が無かったと言いなさい
      • Re:過去問 (スコア:4, 参考になる)

        by Metaphor (11341) on 2009年09月13日 11時30分 (#1639033) 日記

        IDAには無料版もあります。
        最新版と比べると、だいぶ機能が制限されていますが。

        IDA Pro 4.9 Freeware Version [hex-rays.com]

        親コメント
      • 同じく、1問目だけやってみたのですが、Windows用のバイナリだと判断して、逆アセンブルして、そこまでで既に30秒は経過。

        どうやったら14秒で解けるのでしょうか?

        答えが見つかるまで10分ほどかかりましたが、一番時間かかったのはXORの計算だったり(汗

        親コメント
        • by junichi308 (15687) on 2009年09月15日 15時20分 (#1640007)

          8bit機時代にハンドアセンブルしてましたが、その影響からか直接バイナリダンプから
          ある程度コードが読めてました。(Z80です)
          色々なアルゴリズムって大抵似たようなバイナリ吐くし、コンパイラ使ってビルドしてるなら
          なおさらコンパイラの吐くコードの癖さえ体で覚えてしまえばかなり早く解析出来ると
          思いますよ。

          たぶんですけど、14秒で解くような人たちは色々なCPUの色々なコンパイラなりアルゴリズムなりの
          バイナリイメージを体で覚えているような人たちなんじゃないのかな~?と思いました。

          親コメント
typodupeerror

あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall

読み込み中...