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

Windows 7 ユーティリティ、GPL プロジェクトのコードを一部「拝借」している? 73

ストーリー by reo
驚愕と恐怖、そして脅迫、あと感染 部門より

ある Anonymous Coward 曰く、

Windows 7 のユーティリティの一部に GPL コードが使われているようだという話が本家 /. 記事にて話題になっている。

ネタ元は WithinWindows.com の記事。Rafael Rivera 氏によれば、Windows 7 USB/DVD Download Tool (Windows 7 のセットアップファイルを DVD や USB にコピーするユーテリティ) のソースコードに GPL プロジェクト「ImageMaster」のものらしきコードが、そうとは明記されずに使われているとのこと。

Rivera 氏はこのようなシンプルな機能ツールにしてはコードが多すぎるように感じたとのことで、Reflector を使ってメソッドやプロパティのネーミングなどを洗い出したところ、「CodePlex でホストされている ImageMaster から流用されているのは明らかである」と Rivera 氏は指摘する。

なお、Rivera 氏の挙げている Microsoft ユーティリティのコードと ImageMaster のコード比較の一例はこちら

ちなみに Windows 7 USB/DVD Download Tool のページ内のコンテンツは撤去され、cannot be found となっている。さすがマイクロソフト、仕事が早い。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2009年11月11日 13時27分 (#1669737)

    如何にしてソフト会社は崩壊したか! [fujigoko.tv]の終章 [fujigoko.tv]に、バレた事例が載っています。
    パクリ元とは違う見てくれになってはいましたが、全く同じバグ(ESC打鍵により正常動作しなくなる)により発覚したというオチです。

  • 大本はどこ? (スコア:2, 参考になる)

    by Anonymous Coward on 2009年11月11日 16時28分 (#1669859)
    Microsoft lifts GPL code, uses in Microsoft Store tool
    http://www.withinwindows.com/2009/11/06/microsoft-lifts-gpl-code-uses-in-microsoft-store-tool/

    のスレッドを見る限りでは、7-Zip由来のコードかもしれないし、ひょっとすると、MSDNのサンプルそのままかもしれないと書いてあって、元著作権がどこにあるのかを見極めるのは以外と難しいかもしれませんね。MSDNのコードなら、MSは何にも気にしなくて良いし、7-Zipは、LGPLっぽいので、DLLレベルでの動的リンクなら問題はないでしょう。

    なので、MS内部での調査に時間がかかるとしても仕方がないかもしれません。
    ユーザーとしては、このまま、ツールがお蔵入りになるのだけは避けて欲しいなぁと。
    • Re:大本はどこ? (スコア:4, 参考になる)

      by leiqunni (8779) on 2009年11月11日 18時56分 (#1669966) ホームページ 日記

      CodePlex は Microsoft が運営してるサイトだし、
      もしかしたら作者の element109 さんは社員だったりして。
      と調べようとしたら本家に、

      Element109 wrote on: http://social.msdn.microsoft.com/Forums/en-US/windowsopticalplatform/t... [microsoft.com]

      The iso and udf parsing portions were ported from the 7-zip project. The credits.txt file contains all the sources used in creating my project.

      7z
        by Igor Pavlov
        7-Zip is a file archiver with a high compression ratio.
        http://www.7-zip.org/ [7-zip.org]

      There are links to his source on his homepage. 7-zip is hosted on the SourceForge website.

      と書いてありました。

      また別に 7-Zip 由来じゃないとしても、element109 さんが Microsoft に許諾してればいいだけの話で、
      勇み足だったと思います。

      勇み足にしては醜いですが。

      親コメント
  • by reininn (35924) on 2009年11月11日 14時27分 (#1669786)
    Windows 7 に入っているフリーセルって、
    Gnome に入ってるやつに似てるんだけど。
    今までWindowsの絵柄の方が良かったのになぜ変えたのかな?
  • by upken (38225) on 2009年11月11日 17時06分 (#1669887)

    この際だから改良してほしい。
    俺の環境だと必ず最初のフェーズで失敗するから。
    # USBストレージの方が悪いかも

  • by Anonymous Coward on 2009年11月11日 11時42分 (#1669641)
    スペイン宗教裁判じゃあるまいに…
  • by Anonymous Coward on 2009年11月11日 12時04分 (#1669653)
    編集者は皮肉のつもりなんだろうけど、感染してるのがわかったら
    はやく撤去するってのは極めてまっとうな対応では?

    感染しないように日ごろから気をつけるのがいいのは当然として。
    • by Anonymous Coward on 2009年11月11日 12時48分 (#1669696)

      >感染しないように日ごろから気をつけるのがいいのは当然として。

      中核の製品についてはそうするしかないですけど、今回のようなユーザーに
      提供する便利ツールだとか商売の中核にないものについては、堂々とGPLだから
      ソースが欲しい人は連絡して、と書いちゃうのも手だと思いますけど。
      GPLを避けるため延々と車輪の再発明を続けるというのも効率が悪すぎるし
      影響のない範囲でGPLを商売の中に取り込んでいくのもひとつの方向じゃないかなあ。

      親コメント
      • by Anonymous Coward
        「このタイヤを採用するなら、その車の設計全てを公開しなければならない」
        と言われたらそのタイヤを排除して別のタイヤにするでしょ。
    • by Anonymous Coward
      皮肉でもあるし、賞賛でもある。
      かみつくようなところか?
      • by Anonymous Coward
        「勝手に使っていいけど、その分お前も協力しろよ?」っていう
        紳士協定を「感染」というウィルスをイメージさせる表現で
        愚弄したいだけではないかと。

        人の大切な家族を強姦しておいて、捕まったら
        「淫靡な格好をして男たちを誘っていた本人が悪いんだ」
        見たいな事を言う卑劣漢とそう変わらない人なので
        気にする必要ないよ。
    • by Anonymous Coward

      もし自分がImageMasterの作者だったら、証拠隠滅のように消すだけでなく
      パクってすみませんの一言ぐらいは欲しいな。

  • by Anonymous Coward on 2009年11月11日 12時37分 (#1669684)
    悪の帝国 vs 狂信集団
    どっちも、がんばれ!!
  • by Anonymous Coward on 2009年11月11日 12時42分 (#1669688)
    ほとんど言いがかりレベルだな。頭おかしいんじゃねーの?
    • by genzin (23225) on 2009年11月11日 13時20分 (#1669730) 日記

      コード比較だけをみたんじゃわからんでしょ。

      Disassamblerソース(MSのオブジェクトを逆変換したのはこっちだと思うが)
      にある、クラス名やメンバ名などが一致していることのほうが問題ですね。
      ざっと、ImageMaster のソースを取ってきて調べてみたけど、LogicalVolume,
      UdfHelper, PartitionMap のクラス名とメンバの名前は一致したので、
      コードを利用している疑いは強いです。

      親コメント
    • by dagama (34698) on 2009年11月11日 12時46分 (#1669692)

      トレス疑惑の追及に近いものを感じる。

      # や、もちろんライセンス違反はいけないことですけどね?

      親コメント
    • by Anonymous Coward on 2009年11月11日 13時17分 (#1669726)

      コード比較ちゃんと読め。左側は逆アセンブル結果なので、
      本来のローカル変数名定数名に関する情報が失われている。
      それを踏まえた上でコード読むと、両者はけちのつけようが無いくらいほとんど同じということが
      わかるはず。

      親コメント
    • by Anonymous Coward
      同感。どこが似ているのか解説求む。
      • by T.Sawamoto (4142) on 2009年11月11日 15時08分 (#1669815)

        逆アセンブラ/逆コンパイラを通したばやい、元のソースと完全に一致することはありません。
        変数名は反映されませんし、最適化によりコードの記述が若干影響を受けることもあります。

        では、どの程度異なるものなのか、実際に試してみることにします。
        PNG画像のコードを書き写した上でコンパイル可能なようにコードを追加し(クラスや変数・定数の宣言)、csc.exe(version 3.5.30729.1)でコンパイル後、それを逆コンパイルしてみました。

        ※Rafael Rivera氏の使われた逆コンパイラは不明ですが、ここでは.NET Reflector [red-gate.com]を使っています。

                LogicalVolume volume = new LogicalVolume();
                volume.Id.Parse(0x54, buffer);
                if ((volume.BlockSize < 0x200) || (volume.BlockSize > 0x40000000))
                {
                    return false;
                }
                volume.FileSetLocation.Parse(0xf8, buffer);
                num2 = helper.Get32(0x10c, buffer);
                if (num2 > 0x40)
                {
                    return false;
                }
                num = 440;
                for (int i = 0; i < num2; i++)
                {
                    PartitionMap map;
                    byte num5;
                    if ((num + 2) <= 0x800)
                    {
                        map = new PartitionMap();
                        map.Type = buffer[num + 1];
                        num5 = buffer[num + 1];
                        if ((num + num5) > 0x800)
                        {
                            return false;
                        }
                        if (map.Type == 1)
                        {
                            if ((num + 6) > 0x800)
                            {
                                return false;
                            }
                            map.PartitionNumber = helper.Get16(num + 4, buffer);
                            goto Label_0164;
                        }
                    }
                    return false;
                Label_0164:
                    num += num5;
                    volume.PartitionMaps.Add(map);
                }
                volumes.Add(volume);
            }
            else if ((num3 == extent.Length) || (num3 == this.Size))

        このように、おおむね再現されているものの、オリジナルとは一部異なる(goto辺り)部分も見られます。
        (変数名は.NET Reflectorがクラス名から推測して付けてるっぽい)
        また、MaxExtents等の定数らしき部分はconst intで宣言していますが、コンパイル時に即値へ置き換えられていることが分かります。

        親コメント
    • by Anonymous Coward
      片方は逆汗の出力ってとこが味噌
    • by Anonymous Coward
      こんな所で自分の技術力不足を宣伝しなくてもいいのに
  • by Anonymous Coward on 2009年11月11日 12時45分 (#1669690)

    コードの拝借はどれぐらいの規模からライセンス違反になるんだろうなぁ。
    そうと特定されたらアウトってことなら、メソッド名やプロパティ名を変えたり、
    いらない処理をちょちょいと混ぜればわからなくなる?

    • by greentea (17971) on 2009年11月11日 15時46分 (#1669837) 日記

      殺人や万引きと同じで、バレなければ誰かに責められることはないでしょうが、バレないようにならやってもいいという話ではありません。

      どの程度から利用したことになるのかは、定義としては曖昧だと思いますが、少なくとも、GPLなソースからのコピペや丸写しは利用したことになると考えた方がいいでしょう。
      メソッド名やプロパティ名を変えたり、何かをちょいちょい加えても、GPLソースを改変したに過ぎないので、利用したことになります。

      --
      1を聞いて0を知れ!
      親コメント
  • by Anonymous Coward on 2009年11月11日 14時17分 (#1669780)
    こういうアプリを配布する際の定番として、ダウンロードするときの説明文にはきっと
    「リバースエンジニアリングや逆アセンブルを禁止します」
    と書いてあったと推測される。
    ゆえにRafael Rivera 氏にはライセンス違反の疑いがある。これは許されることではない。
    • by Anonymous Coward

      ライセンス違反していたソフトのライセンスってどういう扱いになるんだろう?
      守る義務って発生するの?

      • 少なくとも(最初にGPLで公開していた人でも、それを流用した人でもない)第三者は守る義務があると思いますよ。
        泥棒の家に忍び込んで盗品をさらに盗んだら、やっぱりそれは泥棒になりますから。

        最初にGPLで公開していた人はどうなのでしょうね。
        不正利用であることを証明できれば「帳消し」にはできるんじゃないでしょうか、少なくとも。

        親コメント
      • by mamoru (617) on 2009年11月11日 17時27分 (#1669905)

        >ライセンス違反していたソフトのライセンスってどういう扱いになるんだろう?
        >守る義務って発生するの?

        発生しません。

        他人の著作物(あるいはそれを利用した二次的著作物)に、原著作者と何の
        合意もなく、勝手にライセンスをくっつけられるのなら、世界中の著作物に、
        俺様ライセンスつけちゃうぞ〜。

        親コメント
      • by Anonymous Coward

        もちろん。何で守らないでいいと思ったの?

        こういう時はこうつっこむんだよ
        「利用契約を結んでないソフトのライセンスをなんで守らないといけないの?」
        リバースエンジニアリングをしてるだけで利用してないものね。

  • by Anonymous Coward on 2009年11月11日 15時18分 (#1669820)
    残念

    としか言いようが無いわ
  • by Anonymous Coward on 2009年11月11日 15時35分 (#1669833)
    これはもうWindows7のソースを公開してオープン化するしかないねっ
  • by Anonymous Coward on 2009年11月11日 16時03分 (#1669845)

    ありとあらゆるコードパターンをGPL化してしまったら
    もうそこでソフトウェアの歴史は終わってしまうのだろうか

    それともライセンス無効化を訴えることができる?

    • by Anonymous Coward
      始まりですよ。 ありとあらゆるコードパターンが GPL の許、自由に再利用できるのです。素晴らしい!!
typodupeerror

「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常

読み込み中...