問題タブ [portable-executable]

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.

0 投票する
3 に答える
2970 参照

windows - Windows PE - リソースにない場合、文字列はどこにどのように保存されますか?

通常、.exe ファイル内の文字列 (ダイアログ ボックスの内容/タイトルなど) は、何らかのリソースに保存されます。

しかし、私が逆アセンブル/リソース検査したいくつかの最近のexeでは、文字列を含むリソースを見つけることができませんでしたがdb、プログラムのソースコードに何とかハードコードされていました。

  • プログラムに直接配置されている文字列を抽出して変更するにはどうすればよいですか? それらはconst char*C++ の s に相当すると思いますか?

  • ダイアログ ボックスやメニューなどのコンテンツを「外部委託」しないのはなぜでしょうか。

0 投票する
1 に答える
1367 参照

windows - Windows PE ファイルからの .rdata Unicode 文字列の変更

Windows .exe ファイルの .rdata セクションに格納されている静的文字列を変更する方法を探していましたが、実際に行う方法はまだ見つかりませんでした。

  • すべてを手動で (この場合は HEX エディターで) 行うには複雑すぎるため、解決策があるかどうかを知りたいと思いました。
0 投票する
3 に答える
19258 参照

winapi - PEファイルが無効なのはなぜですか?

「PEヘッダーの要件」という同様の質問をすでにしましたが、その答えには本当に満足していません。

JavaSE1.6でアセンブラ/リンカを構築しています。PE / COFFヘッダーとファイル形式に関する5つの異なるドキュメント/仕様を読みましたが、問題が発生します。

生成されたファイルは無効です、とWindowsは言います:「Xは有効なWin32アプリケーションではありません。」私は何が間違っているのかわかりません。PEヘッダーとPEオプションヘッダーのすべてのエントリを再確認しましたが、すべて正しいようです。
私は3つのセクションを持っています:

  • code(RVA 0x1000、ファイル0x400
  • data(RVA 0x2000、ファイル0x600
  • import(RVA 0x3000、ファイル0x800

エントリポイントの値は0x1000(の先頭code)にあり、イメージベースは0x400000です。セクションの配置は0x1000で、ファイルの配置は0x200です。

ファイル全体を表示するには、この質問のリビジョンを参照してください。

つまり、有効なPEファイル(単純な「HelloWorld」メッセージボックスアプリケーション)を取得し、16進エディター(HxD)を使用して変更を開始しました。「Xは有効なWin32アプリケーションではありません」ではなく、さまざまなエラーメッセージが表示されました。

codeコンテンツが「有効な」コードではないことは承知していますが、テストしました。無効なコードを使用すると、アプリケーションのクラッシュエラーが発生します。

「HelloWorld」PEファイルのインポートセクションの内容が無効な場合、「[...]にプロシージャポイントが見つかりません」または「[..]dllが原因でアプリケーションを開始できませんでした」というエラーが表示されます。見つかりません。」、またはアプリケーションのクラッシュ。これらのエラーはすべて非常に便利です。それらはすべて私に何が悪かったのかについての手がかりを与えてくれます。

しかし、「Xは有効なWin32アプリケーションではありません。」というエラーが表示された私のPEファイルは、私を狂わせます。私のPEファイルの何が問題になっていますか?

ダンプビン出力:

0 投票する
3 に答える
13223 参照

linux - LinuxでPE(Portable Executable)形式をELFに変換する方法

PE バイナリを ELF バイナリに変換するのに最適なツールは何ですか?

以下は、この質問の簡単な動機です。

  1. 単純な C プログラムがあるとします。
  2. Linux では gcc を使用してコンパイルし (これにより ELF が生成されます)、Windows では 'i586-mingw32msvc-gcc' を使用してコンパイルしました (これにより PE バイナリが生成されます)。
  3. Bitblaze の静的分析ツール vine( http://bitblaze.cs.berkeley.edu/vine.html )を使用して、これら 2 つのバイナリの類似点を分析したいと思います。
  4. 現在、つるは PE バイナリを適切にサポートしていないため、PE->ELF に変換してから、比較/分析を続けたいと考えました。

すべての分析は Linux で実行する必要があるため、Linux で実行されるユーティリティ/ツールを使用することをお勧めします。

ありがとう

0 投票する
2 に答える
74 参照

exe - 実行されたセクション

IPが最初に指しているexeファイルポイントを取得するにはどうすればよいですか?? 常に .text セグメントの先頭を指していますか?

0 投票する
2 に答える
2613 参照

com - PEファイル(DLL、EXE)がCOMコンポーネントであるかどうかを確認するにはどうすればよいですか?

PE(DLL / EXE)を入力として指定すると、それが通常のWin32 DLL/EXEであるかCOMDLL/EXEであるかを判別するスタブモジュールを作成する必要があります。これをプログラムで決定する必要があります。

この目的のためのWindowsAPIはありますか?

0 投票する
1 に答える
2327 参照

dll - インポートされたDLL名を変更しますか?

Portable-Executableでは、PEファイルを編集することでインポートされたdll名を変更できます。ここでは、アプリケーションexeのインポートされたdll名を1つ変更しましたが、そのときは通常どおりに変更されました。たとえば、advapi32.dllから^dvapi32に変更されました。 dll、したがって、ここではsystem32または他のPATHの場所に^ dvapi32.dllがありません..今回は、実際のadvapi32.dllを^ dvapi32.dllに変更し、アプリケーションディレクトリに配置しましたが、今回は正常に機能します....しかし私がntdll&gdi32.dllを試しているとき、それはサポートされていません、私は問題を解決できません、plsは問題に向かって私を助けます..ありがとう。

0 投票する
4 に答える
829 参照

visual-studio - COFFExternsについて疑問に思う

Microsoft PE / COFF SPEC(v8、セクション5.4.4)は、シンボルに次の場合があると述べています。

  1. IMAGE_SYM_CLASS_EXTERNALのストレージクラス
  2. そしてセクション番号0(IMAGE_SYM_UNDEFINED)

「サイズを示す」のは(シンボルテーブル内の)「値」フィールドです。

これは私を混乱させます。特に、「何の大きさを示しているのか」と思っています。

通常、IMAGE_SYM_CLASS_EXTERNALおよびIMAGE_SYM_UNDEFINEDはCL(visual C ++)によってexternを表すために使用されます。

リンカがシンボルのサイズを知る必要がある、または気にする必要があるのはなぜですか?名前を知っているだけでなく、それが外部であり、適切な再配置エントリが設定されている必要がありますか?これはどれもサイズに依存するべきではありません。確かに、コンパイラはこれを知る必要がありますが、オブジェクトファイルからではなく、ヘッダーファイルからその情報を取得します。

CLによってコンパイルされたexternの簡単な例を見てきましたが、Valueフィールドは常にゼロのようです。したがって、フィールドのサイズをエンコードするために使用されていないことは明らかです。

スペックが何の「サイズ」を指しているのか誰か知っていますか?Visual Studioリンカーがそのフィールドを使用する可能性があるシナリオはありますか、それとも仕様の宣伝文句は意味がありませんか?私の限られた脳はそのようなシナリオを考えることができません。

アップデート:

少なくとも常にではないが、シンボルのサイズであるとは限らないことに注意してください。私が観察した場合、値は常に0であるため、質問があります。

0 投票する
3 に答える
4090 参照

windows - ポータブル実行可能構造の説明

移植可能な実行可能ファイルの構造を学んでいます。MSDN の記事を読みましたが、少し混乱しています。それらの正確な構造とその機能については、多少の混乱があります。

誰かが私を助けてくれますか、またはこれについての素晴らしい記事を私に紹介してくれますか?

0 投票する
2 に答える
1301 参照

c# - .NET は Win32 Code Interop をサポートしていますか?

.NET を使用する InterOp Win32 コード (管理されていない Win32 DLL および EXE) が必要です。Win32 署名のデータ型を認識して実行時に Win32 アンマネージ コード (DLL エクスポート関数) を呼び出し、実行時にその型に従ってデータを渡す必要があります。

これは COM で可能です。tlbimp.exe を使用して COM アンマネージド コードをマネージド アセンブリに変換し、リフレクション API を使用してそれらのマネージド型 (tlbimp を使用してマネージド型に変換されたアンマネージド型) を操作できます。

.NET フレームワークで Win32 に関して同じ機能を得るにはどうすればよいですか?

MS がエクスポート テーブル読み取り API を提供していたことは知っていますが、Win32 アンマネージ コードの相互運用のための正確な API を見つけることができませんでした。