2012-09-01 19 views
5

私は、実行可能ファイルが異なるセクションにコードを格納することを読んだ。例えば、データのための別のセクションなどです.WinやMacOSs、Linuxなど、さまざまなプラットフォーム間で共通ですか?コードはどのように実行ファイルに格納されますか?

それについての洞察は、本当に役に立ちます。

答えて

2

WindowsはPortable Executable形式を使用します。

* nixは、一般的に実行可能およびリンク可能な形式を使用します。以前はSOM、a.out、ECOFF、XCOFF、COFFなどを使用していました。

OS XとiOS(そしてNeXT、歴史ファン)はMach-Oを使用しています。

PowerPCシステムでは、以前のMac OSおよび一部のBeOSのフォームで使用されていたPreferred Executable Formatが引き続きサポートされています。

たぶん、あなたは実行ファイルがいくつかのセクションまたはセグメントを有していることを正しいhttp://en.wikipedia.org/wiki/Comparison_of_executable_file_formats

4

で始まる:すべてのそれらのは、しかし、コードされています。

コードには通常1つのセグメントがあります - ELFとPEでは通常これは.textと呼ばれます。 Windowsでは

:追加のものはかなりのWikiやGoogleよりも、自分のためにこれらを表示するには

など、ダイナミックリンクデータを格納するために存在し、ハードコードされた文字列、データのみ、グローバル変数を読んで、上の手を試してみますビジュアルスタジオの一部であるDUMPBIN.EXEというツールがあります。それに手を出せない場合は、Dependency Walker(自由にダウンロードできます)を使用してください。これは、PEとPE32 +(つまり64ビット)ファイルを解析します。

Linuxの場合:ELFファイルの場合、objdump -xまたはreadelf(いずれもほとんど同じですが、オプションは少し異なります)を使用します。

Macの場合:otool -lを使用して、Mach-Oファイルのloadコマンド(セクションとセグメントを表示)を表示します。

いずれかまたはすべてのツールを使用すると、うまくいけば、どのように動作するかがわかります。このことができます

希望、

TG

関連する問題