パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

MS-DOSはCP/Mのソースコードを盗んで作られたのか?証明できたら総額20万ドルの賞金」記事へのコメント

  • by Anonymous Coward on 2016年08月11日 13時51分 (#3061643)

    ソースが欲しけりゃ、わざわざ盗むまでもなく逆アセンブルすればええだけやん

    現代におけるソースコード盗用とは意味が違いすぎますわ

    • by Anonymous Coward on 2016年08月11日 19時46分 (#3061807)

      PL/M で書かれていたという記憶があったんだけど...

      http://www.cpm.z80.de/binary.html [z80.de]
      PLM compiler のあたりとか

      https://ja.wikipedia.org/wiki/CP/M [wikipedia.org]
      生い立ちのあたりとか

      親コメント
    • by Anonymous Coward

      アセンブラ知らなさすぎ。
      ディスアセンブラが吐き出したものは、ラベル付けやワークエリアの解析など
      かなり手間暇かけないとアセンブラのソースにはならんよ。

      この場合の盗用は、現代におけるソースの盗用とほぼ同じ。

      • バイナリを逆アセ>アセンブル(コンパイル)可能なソース化が手間がかかるのは、言われる通り。
        特にワークの意味合いまで完全に調べるのは、相当に手間がかかる。
        「簡単」と言っている人は多分実際にはやったことなくて、「やった事例がある」のを知ってるだけだと思う。やったのなら、その手間に辟易してるだろうから。
        ただし、だからと言ってソース化が不可能と言っている訳ではない。もちろん可能。

        dis.xや半自動化ツールは親コメがいう所の「ワークの解析」なんてのはやってくれない。
        (=親コメで言っているものと同等ですらないものを持ち出しているだけ)

        毎日逆アセと解析している身としては、まぁCP/Mぐらいの規模になれば、ソースを盗用するよりは、むしろ見えているAPIを下敷きに、模倣する方が100倍くらい楽。
        仮にCP/Mの動作を確認したいとしても、テストコード書いて確認すれば良いだけだから、わざわざコストの高い解析をするとは考えにくい。
        親コメント
        • by Anonymous Coward

          > 特にワークの意味合いまで完全に調べるのは、相当に手間がかかる。

          他アーキテクチャへの移植が目的なら「ワークの意味合いまで完全に調べる」必要はあんまないだろ。
          コードとデータの区別ができれば、8080 → 8086/8088 の移植は、キレイに書かれたプログラムならニモニックの機械的な変換でいけるよ。

          • ワークの意味合いまで調べる必要があるのは、
            それがテンポラリ的に使いまわしされるのか、とか、
            グローバル的に意味合いを持たされて使われるのか、とか、
            「同じものを指しているが、意味合いが違う場合」が多々あるからなんですね。

            全く改変する予定がない(機械的な逆アセではかれたコードを一対一で再利用するだけ)のであれば
            最低限それで良いかもしれませんが、
            それをもとに、発展継続を考えているのであれば、どう考えてもシステムの構造や、ワークの意味合いの解析は必要でしょう。

            まぁこういうのは実際にやったことがないと、どのくらい大変かはわからないですよね~。
            親コメント
            • by Anonymous Coward
              なんか資料鵜呑みにしてるだけで、本当にやったことある?

              MS-DOS の時代は、ディスアセンブラとか無くても、モニタでダンプ読んでコード理解するのは当たり前の作業だったよ。
              アセンブラのニモニック覚えるのも、オペコードの数字覚えるのも大差ないから、アセンブラ読めなくてもダンプではコード追えるって人も多かった。それくらいは少なくとも特殊な能力でもないし、誰でもやってた基本能力だった。
              ワークの解析というか、メモリマップ作るのはダンプ読みながらやる標準的な作業の一部。そんな大変な作業じゃない。ダンプレベルでパッチあてたり機能追加したりとか、学生のバイトにもやらせてたぐらいのレベルの作業だよ。

              いまみたいに CPU の挙動が複雑じゃなければたいした作業じゃないので、当時マイコンやってた人なら誰でもできるよ。
              • 逆に「本当にやったことあるの?」と問いたいw
                曲がりなりにも「システム」のプログラムならそれなりの量はあるし、もちろん複雑。

                あなたが記述してるのは「パッチあて」であって、システムの動作や構造をあらわにするレベルの「解析」ではないよ。
                そもそも比較しているものが違いすぎる。
                hello worldが書けたからOSも書けるだろって言ってるようなもんですわ。

                俺も毎日8bit-32bitのコードを解析してるけど、どれも面倒くさいよ。
                CPUの挙動じゃなくて単純にコードの規模の話。
                親コメント
              • ゲームのチートやちょっとしたパッチあてなら、それでいいけど、
                システム一通り読もうとすると、メモ書き程度では破たんだろう。
                というか、そんなに楽なら次から頼むわ。あの不毛とも思える作業。

                CP/M程度なら挙動を模倣するコードを自分で書くのが一番楽かと。

                まあこの時代、ソースの盗用,いいソフトをまねた習作,移植,あたりは
                渾然一体としていて厳密に分けられないことも多いけどね。

                親コメント
              • by Anonymous Coward

                それ言葉の使い方間違ってる恥ずかしいやつ、でケリついてるし

            • by Anonymous Coward

              まぁこういうのは実際にやったことがないと、どのくらい大変かはわからないですよね~。

              拾うところと捨てるところの判断を効率的にできないから全体を把握とか言ってるんだろうなあ。
              ゲームソフトの他のプラットホームへの移植の仕事とか何度かやった経験がある自分からすればバージョン2.2でBDOSのサイズが4kBもないCP/Mについてできない理由をうだうだ語ってるこの人のことは馬鹿としか思えん。

              • 文章ちゃんと読んでほしいんだけど
                「できるか、できないか、で言えば、できる」んですよ。
                でも、当初のコメにあるような
                「簡単、簡単!誰でもできる!」はどう考えても違う。

                「誰でもできる」なんて言葉を現時点で発言するのは
                「文系大卒でも、今すぐできる」って言ってるようなもんですよ?

                あの当時にしろ、そんなに誰でもできる、とかいうのであれば
                swordだとか、そういった「互換性」が取り沙汰される事もなかったはずです。

                なんというか「自分ができたことができないやつは全員バカ」みたいな狭い視野で議論されてますけど、それって自己満足以外に何があるんですか?
                俺も解析や移植なんかは多々やってますけど(なので「できない」なんて主張する気はない)それでもフラットに考えても、CP/Mの全解析が「簡単、できないやつはバカ」なんて思えない。
                自分という例外的な事例を取り上げて、反論したいのなら、どっか他所でやるべきなんじゃないですかね?
                ただのマウント取りたいだけのモヒカンにしか見えませんよ。
                親コメント
              • by Anonymous Coward

                〉ゲームソフトの他のプラットホームへの移植の仕事とか何度かやった経験がある

                学生時代の話?E仕事でした?

              • by Anonymous Coward

                文章ちゃんと読んでほしいんだけど
                「できるか、できないか、で言えば、できる」んですよ。
                でも、当初のコメにあるような
                「簡単、簡単!誰でもできる!」はどう考えても違う。

                「誰でもできる」なんて言葉を現時点で発言するのは
                「文系大卒でも、今すぐできる」って言ってるようなもんですよ?

                「ソースが欲しけりゃ、わざわざ盗むまでもなく逆アセンブルすればええだけやん」や「当時マイコンやってた人なら誰でもできるよ」という投稿を↑と解釈しているのであれば、日本語能力に障害があると言わざるを得んな。
                それか、藁人形論法でも構わんから論破した気分になりたいだけの阿呆だろう。

              • by Anonymous Coward

                1980年の時点の話なら70年代からやってた人ですね。
                文系ではマイコンの存在の認識すら無理では。

              • by Anonymous Coward

                「当時マイコンやってた人なら誰でもできるよ」は違う、という話をしてるのが理解できないあなたの日本語能力に問題がありすぎる。

              • by Anonymous Coward

                「簡単、簡単!誰でもできる!」なんて誰も言ってないことを持ちだして否定してる馬鹿の日本語能力を疑えよ馬鹿。

              • 何を主張したいのか、論旨もまとまってないようですが、
                まぁACですし、とりあえず場を荒らしたかった人だったんですね。
                お疲れ様でした。
                親コメント
              • by Anonymous Coward

                なんというか、今の阿呆なあなたがたが「当時マイコンやってた」からといってまともにできたはずがないですね
                賢い人ほど自分のやっていることの困難さを自覚するものです
                で、AZUCOさんの実績はご存知?

              • by Anonymous Coward

                で、AZUCOさんの実績はご存知?

                なんかのエミュレータを作り掛けで途中で放置してる方、という認識で合ってますか?

                # 実績(=実際の功績・成果)ではないか。

              • by Anonymous Coward

                あなたは、あの程度なら自分でもできると言いたいのかな?

              • by Anonymous Coward

                エミュレータをいくつか手がけた経験から言えばソフトが一つ動くようなったところでエミュレータの完成度は50%以下、二つ動くようなってようやく50%かそこら、三つ四つと動くようなっていってもその過程で非互換部分は見つかり対策を行い、途中どうしてもわからん壁みたいなものに遭遇することもしばしばで動作するソフトが増えるに従い難易度は上がっていく印象なんですけどね。
                「あの程度」ってどの程度のこと言ってんの?

              • by Anonymous Coward

                (#3062540) 氏にとってはちょろい仕事で、(#3062696) =ある程度の知名度のあるエミュレータを手伝った私にとっては非常に大変な程度です

                HBLANKの処理が不正確だったのではないかと推測はされましたが、ただ一つのゲームがいつまでたっても画面が崩れるとか

              • by Anonymous Coward on 2016年08月14日 18時13分 (#3063194)
                火消しに躍起になってるな。
                特定する根拠はかなり強力なのがそろってるんだよ。
                その根拠を知らずに、特定に否定的な事を言いたがる人物もおのずと特定されるよな。
                関係ない他人なら「特定方法はなんだろう」と気になるだろうからな。

                他にもお前の特徴はある。
                数行の短い反射的な、相手を批判するためだけのレス
                ACとそうでない時は意図的に語尾を変えてる

                なんの実績もないお前がまぁよくも他人にあれだけ言えたな。
                典型的な口だけオタクのおっさんだろ。
                親コメント
          • by Anonymous Coward

            DOSは知らんけどハンドラとか自動生成している場合なんかはデータ部分にコードがあったりして
            自動解析結果は信用できない事がよくあります。

            経験ない人にはわからんと思いますけど

          • by Anonymous Coward

            実際ワークは特に考える必要無いんだけどねえ。
            ロジックを追っていくとワークとして使われているエリアが見られる、ってのは往々にしてあるけども、
            そもそも互換品を作りたいなら細かいところなんかどうでも良くて、大雑把にどう動いているか判ればいい。
            エミュレーター作っている訳では無いから、過度の解析は時間の無駄だったりする。

        • by Anonymous Coward

          PL/Mという指摘があるけど、アセンブラの話をすると…

          もとコメントを見て最初に思ったのは、CP/Mって
          どんなアセンブラを使って書いてたの? という
          疑問でした。

          もっとはっきりいうと、コメントツリーのだれもマクロに
          言及していないのが時代性を感じさせるというか。
          (ラベルとかワークエリアとか、そこかよ! みたいな。そんなのどうでもいい)
          アセンブリでプログラムを書くのが普通の時代はマクロを
          使ったものです。生産性が全然ちがいますよ。ちょっと開発すれば
          マクロライブラリはがんがん貯まります。
          マクロ機能はCPPみたいな低機能なものではなくて、VHDLのgenericとかを
          考えてくれればいいです。

          で、言いたかったのは、あれを逆アセンブルすればソース化は
          可能と言うなら、Cだって可能です。

          とはいえ、CP/Mがどんなアセンブラを使ってたか知らないので
          黙っていたのでした。(PL/Mということなので、黙ってて正解だった)

          • 「マクロアセンブラは、マクロアセンブラというツールであって、
            アセンブラとは違う」と思えるくらい違うよね。
            個人的にはIFと書けたら高機能マクロなイメージがある。

            親コメント
          • by Anonymous Coward on 2016年08月12日 21時50分 (#3062450)

            > とはいえ、CP/Mがどんなアセンブラを使ってたか知らないので

            付属のASM.COMなら、マクロどころかリロケータブルなオブジェクト生成やリンケージなどできない単純なアセンブラでしたよ。
            出力はIntel Hexフォーマットのみで、バイナリを作るためにLOAD.COMで変換してましたな。
            後にMACというマクロアセンブラが派生したけど、CP/M1.4時代からあったのはASM.COM。

            まあ、それは商品としてそうであったということだけで、開発したKildallさんが自前で持っていなかったとはいわない。

            > マクロ機能はCPPみたいな低機能なものではなくて、VHDLのgenericとかを考えてくれればいいです。

            例えばMS-DOSのMASMなどと比べるとかなり基本的なマクロ機能しかなかったです。数KB~10数KB程度(MACは手元にないですが、マイクロソフトのMACRO-80アセンブラは19KB、リンカが10KB)のバイナリや32kB~56KB程度のフリーエリアしかない開発環境に多くを求められないでしょう。

            親コメント
            • by Anonymous Coward

              セルフで開発していると思っているバカ

              • by Anonymous Coward

                公開されてるCP/MのソースがPL/Mで書かれてるからなー、初期のCP/MはMDS上でクロス開発され、それ以降の開発はCP/M上でセルフ開発された可能性はフツーに考えられると思うよ。

          • by Anonymous Coward

            マクロって言ってみたいだけの人にしか見えんなあ。
            アセンブラのマクロなんて単なる省力化の手段であって、そんな御大層なもんではないぞ。

        • by Anonymous Coward
          まぁ、当時はメモリも少なかったし何やっても遅かったから手間かかるし、自己書換のコードなんてのも普通にあったし、ワークエリア使いまわしとか、逆アセして人のソース見てもあまり楽は出来ないんじゃないかと。
          • by Anonymous Coward

            自己書換のコードなんてのも普通にあったし、ワークエリア使いまわしとか、

            PL/M ってそんなコード吐くんだあ、勉強になるなあ。

        • by Anonymous Coward

          議論の本質はCP/M(のBDOSとCCP?)が逆アセンブルとどの程度の手間でソース化できるか、それが現実的なものなのかなのに、「逆アセンブルによるプログラム解析についての一般論」か何かに曲解してあーだこーだ言ってるコイツは馬鹿。

      • by Anonymous Coward

        昔々X68k用にソースコードジェネレータdis.xというのがありましての。
        実行ファイルをアセンブラのソースに変換して数行書き換えてまたアセンブル・リンクするなんてことが
        簡単に行えたのじゃ

        • by Anonymous Coward

          アセンブラにかけられる程度なら、中学の頃よくやってた。
          問題は、中身だよ。
          Cのソースでも変数が全部a00012とかだったらコンパイラは通るけど、読めないべ。
          それと一緒。

          • by Anonymous Coward

            Cのソースでも変数が全部a00012とかだったらコンパイラは通るけど、読めないべ。

            読む必要なんてないでしょ。

            • by Anonymous Coward

              どうやって盗用する?
              ほんの一部機能の盗用の話をしているのに。

              • by Anonymous Coward

                ほんの一部機能の盗用の話をしているのに。

                kwsk

        • by Anonymous Coward

          68000のBIOSコールやHuman68kのコールを多用するアプリと
          8086のOSそのものでは自動化された可読性は大きく異なりそうです。じゃ

      • by Anonymous Coward

        アセンブラ知らなさすぎ。
        ディスアセンブラが吐き出したものは、ラベル付けやワークエリアの解析など
        かなり手間暇かけないとアセンブラのソースにはならんよ。

        半自動化でやってくれるツールなんていくつもあったけど何言ってんの??

        • by Anonymous Coward

          半分じゃん。なんだ。

      • by Anonymous Coward

        アセンブラ知らなさすぎ。
        ディスアセンブラが吐き出したものは、ラベル付けやワークエリアの解析など
        かなり手間暇かけないとアセンブラのソースにはならんよ。

        CP/Mよりぜんぜん大きい24kBあるPC-8001のN-BASICを逆アセンブルしてアセンブラのソース化し本として出版した例とか知らんのかな?

        • by Anonymous Coward

          逆アセンブルした後、ソース化してるんだろ。
          なんの反論にもなっていない。

          • by Anonymous Coward

            逆アセンブルした後、ソース化してるんだろ。

            そんなことは現実的ではないという主張に対してのものであり、

            なんの反論にもなっていない。

            例を挙げるのは反論としてフツーに有効。

            • by Anonymous Coward

              例にもなってない。
              ディスアセンブラ結果を手間隙かけてソースにすれば
              いい解析本になる。
              現実的じゃないなんて、どこをどう読めば出るのだ?
              簡単じゃないに対する反例を出せ。

              • by Anonymous Coward

                #3061650 [srad.jp]は

                ディスアセンブラが吐き出したものは、ラベル付けやワークエリアの解析など
                かなり手間暇かけないとアセンブラのソースにはならんよ。

                以上の理由により[逆アセンブルは方法として現実的ではない]という前提で

                この場合の盗用は、現代におけるソースの盗用とほぼ同じ。

                と言ってるわけだけども、お前何トンチンカンなこと言ってんの?

    • フルアセンブラってどっから湧いた話ですか?

「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」

処理中...