問題タブ [coff]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-studio-2010 - このアセンブリ コードをコンパイルできません
アセンブリの学習を開始し、Visual Studio 2010 で次のコードをコンパイルしようとしました
次のエラーが発生しました。
Web で解決策を検索したところ、/coff ディレクティブが原因でエラー A2004 が発生することがわかりました。
引数リストから /coff を削除するにはどうすればよいですか? (これがこのエラーの原因である場合)。
ありがとう、
井戸ソロゾン
windows - IMAGE_REL_AMD64_SECTION 0 ベースか 1 ベースか?
Microsoft PE/COFF ドキュメントによると、再配置タイプ IMAGE_REL_AMD64_SECTION は、「ターゲットを含むセクションの 16 ビット セクション インデックス。これは、デバッグ情報をサポートするために使用されます。」を意味します。
通常、これは 0 から始まると見なされますが、PE ファイル内のシンボル セクション番号は 1 から始まります。IMAGE_REL_AMD64_SECTION 再配置のセクション インデックスは、0 ベースまたは 1 ベースで記述しますか?
visual-studio-2010 - エラー LNK1123: COFF への変換中にエラーが発生しました: ファイルが無効または破損しています - 設定を変更した後でも
MS Visual Studio 2010 を使用してビルドされた C++ Windows フォーム プロジェクトがあります。実行すると、次のエラーが発生します。エラー LNK1123: COFF への変換中にエラーが発生しました: ファイルが無効または破損しています
多くのフォーラムで議論されている一般的な問題であることは知っています。設定している解決策も試しました
プロジェクト プロパティ -> 構成プロパティ -> リンカー -> 一般 -> インクリメンタル リンクを有効にする -> いいえ (/INCREMENTAL:NO)
しかし、私はまだ同じ問題を抱えています。
誰もそれがなぜだか知っていますか?
c - raw ビンから coff への変換
そのような場合、何らかの手順(x86-32)の生の内容を含む.binファイルを取得することは可能でしょうか(またはそれが可能な場合)、これを何らかのツールで(またはそれが可能な場合)リンク可能なオブジェクトファイル(coffなど)に変換できますか)リンクして使用できます(たとえば、GCCで)
具体的には、変換するときにエクスポートシンボル名を取得する必要があるように思われますが、インポートシンボル名が何であるかはわかりません。また、これをそのようなボナリーで使用するために再割り当てテーブルが必要かどうか、または必要なく構築できるかどうかもわかりません変換の過程で、この再配置データで何が起こっているのか理解できません
そのような方法でデータを変換することは可能ですか? 誰かがこれを説明できますか?
c++ - COFF オブジェクト ファイルから関数コードを読み取る
PE と COFF の仕様、Matt Pietrek の「Peering Inside the PE: A Tour of the Win32 Portable Executable File Format」、「An In-Depth Look into the Win32 Portable Executable File Format」、およびこの件に関する他のいくつかのソースを読みました。 .
MinGW GCC 4.7 によって生成されたオブジェクト ファイルから、COFF セクション テーブルと COFF シンボル テーブルを読み取ることができました (デバッグ モードでスタティック ライブラリをコンパイルしていました)。
最終的な目標は、特定のオブジェクト ファイル (COFF) で定義されているすべての関数にアクセスし、それらのマシン コードを構成するすべてのバイトを読み取ることです。
質問 1 : COFF ファイル内の単一関数の開始アドレスを計算するにはどうすればよいですか? 「SectionNumber」で指定されたセクションへのオフセットとして、シンボル レコードの「Value」フィールドを使用する必要があると思います。
質問 2 : 特定の関数の長さ (読み取る必要があるバイト数) を調べるにはどうすればよいですか?
質問 3 : Microsoft の PE & COFF 仕様によると、関数を定義する各シンボル レコードの後に、補助シンボル テーブル レコードが必要です。3 つの定義済み関数のオブジェクト ファイル (デバッグ モードでコンパイルされた .a ファイルから抽出) で、そのような補助レコードが 1 つしかないのはなぜですか? そして、それもゼロで完全に埋められていますか?
c - GAS アセンブリをアセンブルして Open Watcom C ライブラリとリンクするにはどうすればよいですか?
16 ビットの DOS 実行可能ファイルを生成しようとしていますが、gcc コンパイラを使用しています。そのため、古い gcc-4.3 ia16 ポートを使用しています。ビルドの Docker イメージを作成しました: https://registry.hub.docker.com/u/ysangkok/ia16-gcc-rask
これが私が試みていることです:
gcc は OpenWatcom の libc ヘッダーを使用できないため、ヘッダーは含めません。
16 ビットの binutils が利用できないため、リンクしません。オブジェクト ファイルをビルドすると、16 ビットとして正しくマークされません。
今、私はこのアセンブリファイルを持っています:
コンテナーの外側のホストで、yasm を使用して組み立てようとします。
yasm が理解できないので、構文行をコメントアウトして、再試行すると、今度は成功します。
再配置シンボルをテストします。
悲しいことに、それらは 32 ビットです。とにかくコンテナでリンクしようとすると、うまくいきません:
ELF の代わりに COFF を作ろうとすると、yasm はアセンブルさえできません:
yasm が 16 ビットをサポートしていないことは知っていますが、回避策はありますか? GAS 互換の 16 ビット アセンブラはありますか? GAS から Intel へのコンバーターが機能していません。
exe - PE ファイル内のディレクトリ RVA の物理ファイル アドレスを特定する
PE ファイル内の特定のデータ ディレクトリのイメージ アドレス (ファイル内のバイト オフセット) を特定するにはどうすればよいですか?
たとえば、データ ディレクトリが次のように指定されているとします。
インポート ディレクトリ (上記の #2) は、0xAF974 の RVA にあるものとして示されています。ただし、インポート ディレクトリは、EXE ファイルのバイト 0xAF974 にはありません。ファイルがディスクに書き込まれるときに、ファイル内のインポート ディレクトリのバイト オフセットを計算するにはどうすればよいですか?