逆コンパイルマニアが多いのでしょうか?
ウインドウズOSをはじめとするマイクロソフト製品に、
アルゴリズムやプログラム記述上の欠陥過失があることを
マッキントッシュのユーザーグループで多く話題にされているのを見ます。
そこで、ごくごく単純素朴な疑問なのですが、
ソースコードの見比べをしないとわからない内容だと思いますので、
オープンソースでもないのに中身がわかる、というのは、マックファンの皆さんは多分MS製品を逆コンパイルをしてアップルのプログラムと比較しているのだと思うのですが、
そもそも逆コンパイルによって生成されたソースコードの記述文というのは「原本」とはかなり違ったアバウトなものになる、という逆コンパイラの一般論的な説明文をパソコン用語辞典などで拝見しています。
アップルの製品は逆コンパイルして生成される記述文であっても、やはり美しくて感心するようなものなのでしょうか???
またプログラミング上の美しさや間違いというものは、逆コンパイルで本当に判明できるものなのでしょうか?
回答(7件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
No.7ベストアンサー10pt
あまりレベルが高くないソフト屋さんのたわごとと思って聞いてください。Mac、Windows、Unix系、その他さまざまなリアルタイムOSといわれてるものに何年か付き合いましたが、、、
開発ツールでデバック用に公表されているソースとかを見るとどれもいいものと悪いものが混ざってますし特にMacが秀逸ってわけではないように思えます。これはすごいな~と思うようなソースはどのOSにもあるだろうし、何じゃこりゃっていうソースもどれにでもあると思います。
私が下手くそなのか、ほとんどのOSでどうしようもなくなることがありますので、困ったときに逆アセンブルします。逆アセンブルで多少なりともアルゴリズムが読めることは確かです。
しかしそこからどのようなソースが書かれているかは、推測するしかなく、プログラミングの美しさなんて私には推測できませんでした。処理の間違いは推測できますが、これもあくまで”バグじゃないの??”といった推測のレベルでした。
企業秘密をリークする社員がうんぬんの話ですが、リークもあるでしょうが盗まれることもあるのではと思います。Windowsのほうがはるかに価値が高いので当然Windowsが狙われやすいのではと感じます。
Macで信頼性が必要なシステムを構築することは少ないですし、ソースが必要なケースはあまりないのでは?アップル社のセキュリティがしっかりしていて社員も情報をリークしないわけではなく、あまりリークしてもおいしくないってことかもしれません。
Windowsのソース開示は一部行われていますからその辺から漏れたのかもしれません。
MS本社の社員待遇(給料面)はUSAの中でもかなりいいと実際働いている人に聞きました。しかしながらかなり社員数も多いですし、OS開発用の契約社員も多くいるようですので多少のリークはあっても不思議ではないと感じます。
ただ最近思うことはWindowsアプリケーションの質が下がっているような気がします。それは市場が広がり便利なアプリケーションが増え競争が激化するに従って、開発スパンも短くなって行くので仕方のないことかもしれませんね。
私はプライベートではほとんどWindowsで、気が向いたらMacを使います。便利なWindowsもいいですがやっぱりMacの方がGUIがきれいですので。。
そういった芸術性みたいなものがMacユーザーをリバースエンジニアリングしてまでWindowsに対抗させる原動力になっているんでしょうね。
この回答へのお礼
>たわごとと思って聞いてください
いえいえ、そんなあ、さまざまなプラットフォームでのご経験豊富で、ご自身のお仕事にも責任を背負って立っていらっしゃる職業人としてのプログラマーさん(この職業分類の呼称に語弊がありましたらほんとにごめんなさいです^^;)の実践的な実のあるご回答がいただけて本当に嬉しく思い、私も変な思想的足かせに心身をすり減らすことが今後少なくなると思うと、本当に救われた気がします。
>当然Windowsが狙われやすいのではと感じます。
この盗難や非合法な入手による重要情報が盛んにマックファンのコミュニティに流れて、「マイクロソフトのプログラミング技術はこんなに浅はかである」という「動かぬ証拠」として保管されている、とすると、私は自分でマックを使っていて、この手の話題を目にするたびに仲間のとっている行動が実に重苦しい気持ちになります・・・
>そういった芸術性みたいなものがMacユーザーをリバースエンジニアリングしてまでWindowsに対抗させる原動力になっているんでしょうね。
・・・というか、「すべてはアップルが元祖」という大前提で世界が回転しますので、MS製プログラムを分析して「ここも盗作、あそこも盗作、知的財産の侵害をするな、しかしいくら真似をしてもMSは稚拙で高度な比較の結果はやはりアップルのほうが遥かに高級」と満足して一連のスレッド終了、というケースが多いようが気がしていますがいかがでしょうか。
>Macで信頼性が必要なシステムを構築することは少ないですし、
そうなんですよね。
これが「青筋立てていきりたつ派」のみなさんの論拠としては一番不思議に私が思うところです。
闇のロビー活動や腐敗した政治献金に根回しされて、世界のミッションクリティカルな用途に危険なマイクロソフトのサーバーが不当に多用されている、と真顔で憂慮している方々が本当に多いですが、本当にそうであれば、それこそ信念を発揮して、今こそ危険な製品の世界的に不正な大量採用を告発するぐらいでないと行動の間尺がまるで整合性を感じませんので、ますます奇妙な宗教組織と思われる行為が繰り返されている、という悲しい気の滅入る思いを一ユーザーとして折々心が痛みます。
まあなんというか…
その手の信者間の議論というのは、どこまで行っても宗教論争でしかないのです。
もちろんここまでで提示されている回答はそんなことはないわけですけど。
まあそれ以前に、MacOS8のTCP周りのコードはどうだったのかとか、MacOS XでカーネルをBSD由来のdarwinに変えて、それまでのMacOSのコードをほぼ捨て去ったのはなぜなのかとか、今度のIntel採用もいつものアーキテクチャ変更でしょ?とか(過去3回大幅なアーキテクチャ変更があった。具体的には、68000~68030EC→68030~68040→PowerPC601~605→PowerPC G3~PowerPC G5 この"→"がアーキテクチャ変更)、コード周りのことだけでもいっぺん聞いてみたいと思うことはたくさんあるのですよ。
WindowsがダメならMacOSもダメ。所詮人間が書くプログラムに間違いがないわけがない。
お目汚し失礼しました。
この回答へのお礼
どうもありがとうとざいます。
>所詮人間が書くプログラムに間違いがないわけがない。
わたしも、その大前提だと同感ですが、
「動かぬ証拠」としてのマイクロソフト製品の欠陥&アップル製品の完全性(配慮と検証密度の高さ)という主張が365日×20年間、必ずどこかで繰り返し力説されている「証拠の背景」は何だと思われますでしょうか?
愚問であることを承知で蒸し返しになってしまい大変恐縮です。
「証拠をつかんでいる」
ということは、逆コンパイルでなければ、MS製品のソースコードを読むことが出来るなんらかの立場にいるマックファンが意図的にリークしていることになると考えるしか、他に選択肢がなさそうにも思うんです。
MS社員に熱狂的なマックファンが数多く在籍しているということは度々報道コラムなどに出ていますが、これらの人の仕業になると見てもよいのでしょうか???
そうであれば、MS社は企業秘密情報をリークする自社社員または関連取引先を服務規定違反や背信行為として厳しく取り締まる必要があると同時に、すでに判明していたプログラミング技術上の瑕疵のチェック体制が不足していることを猛省して、担当社員を冷遇していたならば厚遇に改めてアップル並の防止体制に抜本的な組織改革を断行しなければならないのが本筋ですもんね!
この辺が実に不思議なんですよね・・・
(で、思い余って投稿しました^^)
三菱自動車や三井物産の排ガス装置欠陥事件のように、技術者がきちんと注意していれば防げたはずの「欠陥」がマイクロソフト製品には多くて、マックのコードには本当にそのようなミスが徹底的に検討されている、という企業風土の倫理観の差が厳然と存在していることになりますでしょうか?
マックコミュニティで20年間通説となっている「証拠」のつかみ方、としては、どの線が現実味を持っていると思われますでしょうか?
逆コンパイルでは、原文コードの生成に悲観的ですから、そうすると・・・
No.5ベストアンサー20pt
> インターネット時代になってからどんなコンピューターにも標準でつくようになったTCP/IP関連については「機能を同じくする2つの類似したルーチン」で殆ど同じものとして比較が可能になってきたと思うんですが、こういった同じ土俵での比較がされていることを意味しているのかどうか、という疑問です。
TCP/IPという括り全体では、現在の汎用OSでは含まれる実行コードが数百KBにも達するので、単一の「ルーチン」と呼ぶには大きすぎます。もちろん実際にはそれを多数のレイヤに分割して複数の比較的独立したモジュールとして実装しているわけですが、その分割の方法(ポリシー)は各OSによって異なるので、分割後の1つ1つのモジュールを似た機能をもつ別のOSのモジュールと比較することは容易ではありません。
もちろん比較すること自体は不可能ではありませんから、「Windowsの〇〇モジュールの××処理の中に△△のような実装上の欠陥があることを確認したが、OS Xの同等モジュールでは□□のように処理しているので同様の欠陥はない」と論じているとすれば、確かにそのような実装上の欠陥がある、あるいはないことを確認したのでしょう(もちろん、主張の内容の虚実はまた別の話としてです)。
さてそれでは、質問者さんがよく見かけられるという比較論は実装を確認した上でのものなのか、それとも単なる感覚論なのか。正直言って個々の議論の内容次第なので何とも分かりませんが、論拠が示されていればその論拠の確度次第、論拠が示されていなければ論者の心情に発する感覚論(論者が確たる根拠を持っていたとしても、それを提示するほどの議論ではないと考え、意図的に感覚論化している可能性も含めて)と考えるのが妥当なところではないでしょうか。
> なるほどやっぱり優劣論を力説する皆さんたちは逆コンパイルを実施している、と思って間違いないですね。
私の回答(「何らかの方法で逆コンパイルを行い、その内容を調べていることは間違いない」という部分)をそのように解釈されることは若干誤解を含んでおります。書き方がまずかったようです。
質問者さんが、質問の中で
「アルゴリズムやプログラム記述上の欠陥過失があることをマッキントッシュのユーザーグループで多く話題にされているのを見ます。」
と書かれていることを受けての回答ですので、私の回答は
「『アルゴリズムやプログラム記述上の欠陥過失』が存在することを確認するためには逆コンパイルを行うほかはなく、その存在を確認している上は、何らかの方法で逆コンパイルを行い、その内容を調べていることは間違いない」
という意味にご理解いただきたいところでした。
質問の内容が
「アルゴリズムやプログラム記述上の欠陥過失がある*らしい*ことをマッキントッシュのユーザーグループで多く話題にされているのを見ます。」
というもの(「*らしい*」のような類推を含むもの)であれば、それは入力と出力から処理の内容を類推し、それを根拠として論じている可能性があるので、必ずしも逆コンパイルを行っているとは限りません。
えーそれから、回答No.4の回答者さんのコメントにありましたコンパイラの件ですが、コンパイラユーザからの明示的な指示なしに副作用のある最適化を施すようなコンパイラは、その最適化を行うこと自体をバグと呼んで差し支えないかと思います。
また、明示的な指示によって行われた最適化のため副作用が生じたとしても、それは処理の内容のうち本線に属する部分では常に(最適化なしの状態と)同じ結果を生じていると考えて、やはり差し支えないかと思います。なぜなら、コンパイラが行うある特定の最適化に依存したコーディング(その最適化を行わなければ処理結果が異なるようなコーディング)は行わないことが普通だからです。
もちろん、副作用のある最適化を行えば、例えばルーチンを脱出する最後の時点で変数に残っている値が違っているかもしれない等の「本線に属さない」副作用が生じる可能性があることは認識しております。それについては論じる必要なしと判断した上での回答だったのですが、それについて言及せずに「完全に一致する」と主張したことは、厳密な意味では拙速のそしりを免れ得ないかもしれません。
この回答へのお礼
> 意図的に感覚論化している可能性も含めて)と考えるのが妥当なところではないでしょうか。
・・・やはりその線が濃厚な様子ですね。
> 質問者さんが、質問の中で
>
> 「アルゴリズムやプログラム記述上の欠陥過失があることをマッキントッシュのユーザ> ーグループで多く話題にされているのを見ます。」
>
> と書かれていることを受けての回答ですので、私の回答は
はい、私もユーザーグループの発言内容には、本人の主張通りの正当な論拠が本当にある、という一歩下がった大前提で受け止めて、その信憑性の可能性についてプログラミングの詳しい方々の現実論的・客観的なご指摘、ご修正をいただければ、という趣旨ですのでどうぞご安心下さいませ。
>これについては、「同じ結果を生み出すための動作なら
>ば、アップルのプログラムは格段にコンパクトである」
>とよく言われるところですが、動作原理のロジックが異
>なるOSで比べても正しい比較にならないと思っています。
OSどころかCPUそのものが違いますよね?
CPUが違うと命令体系も異なるわけです。コンパイラは、そのCPU毎のアセンブリ言語に翻訳しますから(通常はバイナリを直接生成していますので正確ではないのですが)、ここは、半分はOS仕様やOSのコーディングではなく、CPUの差ですね。
今度、マックのCPUがPowerPCからX86に変更になるとか。
そうすると、OSの仕様の美しさと、そこから来る動作の快適さを証明出来るかもしれません:-P
# 「処理の内容は(コンパイラにバグがない限り)完全に一致します」・・・ダウト・・・(^^;)
### その程度のコードを吐き出せば十分だというのなら、コンパイラ屋は苦労しない(^^;)。大局的にみれば、確かに一致しますが・・・。
この回答へのお礼
いろいろたくさん本当に有難うございます。
>今度、マックのCPUがPowerPCからX86に変更になるとか。
>そうすると、OSの仕様の美しさと、そこから来る動作の快適さを証明出来るかもしれません:-P
フロッピーに収まるGUIを実現するプログラミングの美しさ、と誇ってきたものが、いつのまにか巨大にハードディスクを占有することを誇りとする方向に変わってしまったり、
愚の骨頂デバイスと揶揄してきたIDEやUSBや多ボタンマウスに転換してしまったことを、「やろうと思えば何でも出来るのです」と言い換えてみたり、
には、同じマックを使う身としていやな気持ちになる主義主張の都合のよい気の変わりように辟易していましたが、
まさか「CPUは下等です。マックで採用しているのはMPUです」とか、「インテル狂ってる」と大喜びで揶揄してきた中央処理系の大転換には、さすがにコミュニティも沈黙気味ですね。
しかし、現状でインテルに切替の直後は性能が若干低下する、とアップル社が報道で明言しながらも転換を余儀なくされた資本主義原則の事情には素直な同情と時の流れというものを感じています。
まず第一に「逆コンパイルで、ソースの書き方の良さが判るワケがない。(^o^)」
今のコンパイラの優秀さを知らないネ(^.-)。
さらにいうと、MS製OSは逆アセンブルは出来ても、逆コンパイルなんて出来るワケがない。余程のハッカーさんか、仕事人でなければ、逆アセンブルしたアセンブリコードからCのソースコードを推測なんて出来ません。
#簡単な部分を解釈し、そこからソースを類推するのは、私でも出来なくはないけど、複雑なのは追いかける気がしません。
>ウインドウズOSをはじめとするマイクロソフト
>製品に、アルゴリズムやプログラム記述上の欠
>陥過失があることをマッキントッシュのユーザー
>グループで多く話題にされているのを見ます。
これは、マイクロソフトがUPDATEで流している情報と、セキュリティ研究者の話を元にしているのではないかと思います。
# Windowsの方がMacよりもユーザーが多いので、
# セキュリティ関係の話題も検索で多く見つかる
# ということを理解してください。
> アップルの製品は逆コンパイルして…
> またプログラミング上の美しさや間違い…
逆アセンブリリストをみて偶然判る可能性も否定は出来ません。鳥取砂丘のどこかに落とした「星の砂」一粒を見つけるよりは確率は高いと思いますが(^o^)/。
# MACもLinuxもユーザー数がWindows並であれば、発見される欠陥、ウィルスの数などもWindows並になると思いますよ(^o^)。
この回答へのお礼
>まず第一に「逆コンパイルで、ソースの書き方の良さが判るワケがない。(^o^)」
なるほど、やっぱりそうなんですね!
(類推していた自分の仮説が支持されて安心した気がしています)
>今のコンパイラの優秀さを知らないネ(^.-)。
はいそのとおりなんです。
「逆コンパイラ」としてどんな物が実際に出回っているかも知らない身分です。
噂の股聞きでしか知らない逆コンパイルの真実が知りたいと思い投稿しました。
>これは、マイクロソフトがUPDATEで流している情報と、セキュリティ研究者の話を元にしているのではないかと思います。
私も常々そう思って聞いてきた話なのですが、「絶対に間違いのない検証をしている。あなたがバカなのだ!」と主張する人があまりにも多いので、プログラミングに本当に詳しい皆様に助けていただきたいと思い余って勇気を出して質問してみました。
> MACもLinuxもユーザー数がWindows並であれば、発見される欠陥、ウィルスの数などもWindows並になると思いますよ(^o^)。
私の仮説もまったく同じなのですが、
「事実を何も知らないで想像の仮説で勝手なことを言わないで下さい」
と何度もマック優勢主義のみなさんから怒られてきましたので、その「事実」とは具体的にどんな検証の方法があって、どんな方法で実際に検証が実施されているのかの現実的選択肢の実態を知りたかったです。
僭越ながらrot-Nさんのご登録プロフィールを拝見しましたら、Macintoshもご専門分野にご登録されていらっしゃいますので、中立的にプログラム論としての客観事実をご回答してくださっているもの、とかなり安心しました。
ところで、
> MACもLinuxもユーザー数がWindows並であれば
の件についてもう少し実態の把握をしたいと思っているのですが、
ウイルスの作成件数に関してはユーザー数と比例する、と単純素朴に納得できるのですが、不正侵入を許す・許さない、という問題についてアップルのプログラミング技術が鉄壁だから、という趣旨の主張に数多く出会いました。
その根拠として添えられている具体的な理由が、「侵入者はサーバーの種別が何であるかを問わず平等に侵入を仕掛けているにもかかわらずMacには被害が報告されていないから」というものですが、これは本当にMacが正常に機能していて、Windowsが穴だらけの欠陥で正常機能していないという証拠になるものでしょうか?
No1の補足がちょっと気になったので。
>>もっとも、比較はしていないとしても、何らかの方法で逆コンパイルを行い、その内容を調べていることは間違いないところです。
>なるほどやっぱり優劣論を力説する皆さんたちは逆コンパイルを実施している、と思って間違いないですね。
でもこれは使用契約書で禁止されている行為だのに、自分のおこなった行為は棚に上げて、もろもろの使用契約内容については他人には非常に厳しい人々が多いのには、おかしなバランス感覚の人々だなあ、と困惑気味です^^;
このような重大な問題を何の根拠も明示しないで、断定するのは問題がありますし、それを鵜呑みにする質問者
もどうかと思います。
この回答へのお礼
どうもありがとうございます!
質問の趣旨としましては、「宗教的思想観」と、プログラム記述上の「事実」
の区別が本当にされているのかどうかをはっきり自分で認識しておきたい、
という背景が動機でした。
ですので、「絶対に間違いない」と断言してはばからない責任を持ったマッキ
ントッシュ優勢派のみなさんの主張に一抹の不安を感じながらも、むげに疑念
を投げかけては失礼になるし、かといって自分の頭の中ではいくら勉強しても
拭えない疑問の大きな問題ですので、こちらのカテゴリーに集う専門のみなさ
まにお助けをいただきたくて、標記のような文体の質問となりました。
どうかご理解いただき、私の混乱を論理的に正しい方向に導いていただけま
したら幸いです!
今後ともどうぞよろしくおねがいします。
まず質問のタイトルともなっている「マッキントッシュのユーザーには逆コンパイルマニアが多いのか」という点ですが、質問者さんは個人的にマッキントッシュ関連(あるいはより一般的にアップル関連)の情報に興味をお持ちなのではないかと推察いたします。そのためマッキントッシュのユーザーグループでの話題に接する頻度が高く、たまたまご質問のように感じられただけなのではないでしょうか。
次にプログラム記述上の欠陥はソースコードを見比べなければ分からないのではないかというご意見ですが、2つの点で誤解があります。
1つは、欠陥とは比較の結果生じる状態ではないということです。あるプログラムに欠陥があるのであれば、それは何か別のプログラムと比較するまでもなく欠陥があるのですから、「ソースコードの見比べをしないとわからない」ということはありません。
もう1つは、2つのプログラムが「機能を同じくする2つの類似したルーチン」でもない限り、ソースコードを見比べてその違いを考えることに意味はないということです。例えていえば、ポルシェの自転車とプジョーの自転車を比較して各社の違いを論ずることに何らかの意味があるとしても、ポルシェの自転車とプジョーの「自動車」を比較したのではほとんど意味がないということに似ています。
もっとも、比較はしていないとしても、何らかの方法で逆コンパイルを行い、その内容を調べていることは間違いないところです。そのときの逆コンパイル後のコードは必ずしもコンパイル前のコードとは一致しませんが、処理の内容は(コンパイラにバグがない限り)完全に一致しますので、例えコードが一致していなくても調査に支障はありません。
コンパイル前のコードの「美しさ」が逆コンパイル後でも分かるかどうかという点については、コンパイル前のコードの字面の奇麗さは全く分かりませんが、アルゴリズムが洗練されているかどうかについては分かる可能性があります。例えばソートを行っている場所で、そのアルゴリズムがバブルソートなのかクイックソートなのか程度は逆コンパイルでも充分分かるわけです。
この回答への補足
早速に本当に有難うございます!
>それは何か別のプログラムと比較するまでもなく欠陥があるのですから
これに関する一番気になる焦点は、不正侵入や不正コードの実行を許すかブロックしているか、という最近の悩ましい問題がトップの関心事項なのですが、
「優秀なアップルのプログラマーはこれらの不正を許さないが、マイクロソフトのプログラムは注意散漫に作成されているので不正侵入がしやすい」
・・・という趣旨の話題が目立つのですが、こういった話題の論点は本当に当たっているのかどうか、ちょっと心配というか疑問に思って投稿してみました。
マルウエアを含むいろいろなモジュールやプログラム同士の組合せで生ずる出荷時には予見不能な組合せの後天的結果としての発現を「欠陥」と呼称しているだけなのか、当初からプログラマが目を光らせて設計されていれば当然に防げた「欠陥」なのか、という点に関心を持っています。
>「ソースコードの見比べをしないとわからない」ということはありません。
これについては、「同じ結果を生み出すための動作ならば、アップルのプログラムは格段にコンパクトである」とよく言われるところですが、動作原理のロジックが異なるOSで比べても正しい比較にならないと思っています。
ところがちょうどいい具合に、インターネット時代になってからどんなコンピューターにも標準でつくようになったTCP/IP関連については「機能を同じくする2つの類似したルーチン」で殆ど同じものとして比較が可能になってきたと思うんですが、こういった同じ土俵での比較がされていることを意味しているのかどうか、という疑問です。
こういった比較の上での絶対的な優劣の定説なのか、単なる感覚論なのかどうかが気になって投稿してみました。どうでしょうか、実際?
>もっとも、比較はしていないとしても、何らかの方法で逆コンパイルを行い、その内容を調べていることは間違いないところです。
なるほどやっぱり優劣論を力説する皆さんたちは逆コンパイルを実施している、と思って間違いないですね。
でもこれは使用契約書で禁止されている行為だのに、自分のおこなった行為は棚に上げて、もろもろの使用契約内容については他人には非常に厳しい人々が多いのには、おかしなバランス感覚の人々だなあ、と困惑気味です^^;
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示












