• ベストアンサー

言語の判断

ソフトがどんな言語で書かれているのかを判断する場合、逆アセンブルする方法があると思います。 すべてのソフトが逆アセンブルでどんな言語で書かれているか調べることは可能でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

ある程度推測することは可能ですが、完全に判別することは無理です。 判別するための手がかりとしては、実行イメージの中に含まれるランタイムモジュールと、デバッグ情報があります。 このうち、十分なデバッグ情報が含まれていれば、かなりの確率で判別することができると思いますが、最終的にリリースされたものは、デバッグ情報がない場合が多いので、かなり難しいと思います。 ランタイムモジュールは参考にはなりますが、決め手にはなりません。というのも、多くの言語処理系は、いったんC言語を介して機械語を生成する方式をとっているからです。例えば、PascalやFortranやAdaなどは、まずC言語へのトランスレータをかけて、それからCコンパイラを使って実行イメージを作っている場合がよくあります。初期の頃(および現在も一部)のC++も同じ方式をとっていました。 また、C言語の場合も、多くの処理系では、いったんアセンブリ言語のソースを出力し、それをアセンブルします。 このように、最初にプログラマが記述した言語から、機械語に翻訳される過程で、複数の言語を経由することが多々あるわけです。 Ada → C → アセンブリ → 機械語 という段階で翻訳された場合、元の言語がアセンブリ言語であるとかC言語であるとかの結論を出したとしても、それ自体は間違いではありませんが、期待した答えはAdaなわけですよね。そういう意味で、どこまでたどれるかは、何ともいえないと思います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

最近は滅多に無いですが、高級言語を使わずにハンドアセンブルでガリゴリ書けなくもないです。 特定の言語で書かれているように偽装する事も不可能ではないし、個人で開発した言語なんかだったら分かりようもないし。 ソフトが何らかの言語で書かれていると考える前提に拠り所が無いですし、「すべての」ソフトには当てはまらないと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

>逆アセンブルする方法があると思います。 まず逆アセンブル自体ではどんな言語で書かれているかはわかりません。 逆アセンブルとは単にバイナリコードをアセンブリコード(文字列)にするだけです。 ネイティブコードを吐く高級言語は限られています。 80%はC/C++でしょう。Windowsならdelphiという可能性もあります。 コンパイラの最適化には癖があるしPEフォーマットの先頭をみれば ある程度コンパイラの種類の推測はできるでしょう。 ただしコードは不可逆であるため100%断定することは無理です。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ソースが解析できない言語はなに?

    C#やVB.NETだと逆アセンブルのツールなどでソースコードが見れてしまいますが 見ることが出来ない開発言語で一般的なのは何があるでしょうか?

  • アセンブリ言語について。

    アセンブリ言語と機械語は一対一で対応しているので、実行ファイルがあれば逆アセンブルすると 完全に元のアセンブリコードが復元できるのでしょうか?教えていただけないでしょうか?すみません。

  • アセンブリ言語と機械語について。

    アセンブリ言語と機械語は一対一で対応しているので、実行ファイルがあれば逆アセンブルすると 完全に元のアセンブリコードが復元できるのでしょうか?教えていただけないでしょうか?すみません。教えていただけないでしょうか?すみません。どういった例が挙げられますか?

  • C言語をCPUに読み込ませるためには、 C言語か

    C言語をCPUに読み込ませるためには、 C言語からアセンブリ言語にコンパイルして、 アセンブリ言語からアセンブルして機械語2進数にしてCPUに読み込ませるという 2段階をしないといけないんですか? 下記の画像のように説明している動画がありました

  • ソフトの言語の種類を知る方法

    プログラミングをはじめたばかりの者です。 ソフトの言語の種類を知る方法ってあるのでしょうか? よくあるフリーソフトですが、逆コンパイラ?をしないとわからないのでしょうか? 逆コンパイラをしなくても調べられる方法がありましたらお教え願います。 何卒よろしくおねがいいたします。

  • C言語でのOS判断について

    Webから送信されたデータをC言語内でOS判断(MacかWindows)することは可能なのでしょうか?

  • アセンブリ言語のjmpについて

    実行ファイルを逆アセンブルして出てきたjmp(far)というのが良く分かりません。これはどういう動作なんですか? 対応するオブジェクトコードはFF 25 20 F1 40 00となっています。

  • ファイルが壊れているかの判断

    一つのフォルダの中に5000以上のファイルがあるとして その全てのファイルが壊れているか調べる方法はないでしょうか? 重要なデータをバックアップする際,あるソフトを使って同期をしているのですが もしも元のファイルが壊れていた場合に同期をしてバックアップをすると バックアップ先のデータまで元の壊れているファイルに 上書きされてしまうので 元のファイルが壊れていないかどうか判断したいのです。 そのようなことができる方法やフリーソフトはないものでしょうか? どなたかご教授ください。 お願いいたします。

  • html文の使用言語が中国語(繁体)と判断されてしまいます

    html文の使用言語が中国語(繁体)と判断されてしまいます alphaEDITでhtml文を作成しています。またIE6に google toolbar を組み込んでいます。html文に 表を作る場合、表の段数が少ない場合は toolbar の「翻訳」ボタンを押すと「このページはツールバーで日本語に自動翻訳されています」とメッセージが出ます。これは問題ないのですが、表の段数が多くなった状態で toolbar の「翻訳」ボタンを押すと「これは中国語(繁体)のページです」とメッセージが出てしまいます。html文をサーバにアップロードしても、例えば google で検索するとタイトル名 の右側に〔このページを訳す〕と表示されてしまいます。つまり使用言語が中国語(繁体)であると 判断されてしまいます。 (1) 原因は何でしょうか。 (2) 回避する方法はありますか。   (表の段数を増やしても中国語と判断されない方法はありますか) よろしくお願い致します。

  • きれいな発音の言語

    発音がきれいな言語を探しています。 きれいな発音と聞くともちろん主観的な判断が入りますが、それ込みでご助言お願いします。 例えば、フランス語はソフトなイメージなのできれいなど。 マイナーな言語でしたら、その発音の様子が聞けるサイトなども紹介していただけると助かります。

TR9530のサイズに関して
このQ&Aのポイント
  • TR9530の幅について疑問があります。現在の収納場所がギリギリの幅であるため、商品の両側に凹凸があるかどうか知りたいです。
  • TR9530の幅は468mmであり、収納場所の幅が470mmということでギリギリです。商品の両側に凹凸がなければ収納可能ですが、凹凸がある場合は不可となります。
  • TR9530のサイズについて検討している際に、幅が気になります。収納場所の幅が470mmであり、カタログデータによると幅は468mmです。商品の両側がフラットな場合、ギリギリ収納できるかもしれません。凹凸があるかどうかを知りたいです。
回答を見る