問題タブ [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.
object - ELF と PE の基本的なリンク プロセスのしくみ
リンカがどのように機能するかについて、私はいつも混乱しており、検索するのが難しいテーマです。
私の質問を実証し、回答の枠組みを提供するために、これまでに知っている (または知っていると思う) ことを書き留めておきます。私は非常に間違っているかもしれません。:)
まず、各 .cpp ファイルが中間ファイルに組み込まれます (Posix/ELF の場合は .o、Win/PE の場合は .obj だと思います)。この中間ファイルには、ビルド元の .cpp によって定義されたすべてのシンボルが含まれており、適切に解決する必要がある外部リンクについての指示が含まれています。これの拡張として、Posix システムでは .o ファイルを .a ファイルに結合できます (これは結合以上のことをしていないように見えますが、これはどのコマンドですか?)。.lib は Posix .a ファイルに相当する Win/PE ですか?
次に、中間ファイルがリンクされ、外部依存関係が解決され、実行可能ファイルが作成されます。手順がありませんか?
ありがとう!
windows - 可能な限り最小のWindows(PE)実行可能ファイルは何ですか?
コンパイラを作成する前に、Windows(32ビット)のPortableExecutable形式を理解しようとしています。特に、正しくロードし、実行して終了する以外に何もしない、必要最低限の実行可能ファイルの例を見たいと思います。
結果の.exeが約22KBで、KERNEL32.DLL(おそらく、環境やヒープなどをセットアップするためにLIBCによって使用される)からの多くのインポートを含む単純なCメイン関数を記述してコンパイルしようとしました。DOSヘッダーでさえおそらくもっと小さいかもしれません(それは現在デフォルトの'このプログラムはDOSモードで実行できません'を出力します)。
可能な限り最小のWindows32ビット実行可能ファイルの構造は何ですか?
debugging - 逆アセンブリで関数を見つける
私は、作成者が DUMPBIN を使用してエクスポートを一覧表示し、OllyDbg を使用してエクスポートされた関数のアセンブリ コードを取得するチュートリアルに従うのに忙しいです。エクスポート テーブル RVA が逆アセンブリの実際のアドレスに対応していない場合、完全な逆アセンブリで関数コードを見つけるにはどうすればよいでしょうか。
windows - Windows XP ブートローダー (NTLDR) はカーネルのインポート宣言に注意を払いますか?
Windows XP ブートローダ ( ntldr
) は実際に Windows カーネル ( ntoskrnl.exe
) のインポート宣言を利用するのでしょうか?
ntoskrnl.exe
には次のインポートされたモジュールがあります: BOOTVID.dll
、HAL.dll
およびKDCOM.dll
。したがって、これら 3 つのモジュールが最初にロードされます。カーネルに、インポート済みとして宣言された別のモジュールがあるとします。ntldr
それもそれをロードする原因になりますか?それともntldr
、これら 4 つのモジュールをロードする必要があることを知っているだけで、それを変更する方法はありませんか?
kernel - カーネル イメージを ELF から PE に変換する
Msys を使用して、Linux で作成した自家製カーネルを構築しています。Linux はバイナリ形式に ELF を使用し、Msys は PE を使用します。マルチブート仕様を使用して Grub で起動できるようにソースをセットアップしました。ビルドの最後に、未定義のシンボルをいくつか取得します。
これらは ELF 指向のシンボルのようです。PE の世界でこれらをどのように扱うべきか、誰かが私にアドバイスできるなら、例えば同等のものがある場合、それは私を大いに助けてくれるでしょう!
winapi - 「実行」および「読み取り」としてマークされた実行可能セクション?
(少なくとも Win32 では) 実行可能ファイルでは、コード セクション (.text) に「読み取り」アクセス ビットと「実行」アクセス ビットが設定されていることに気付きました。コードが自分自身を実行するのではなく、自分自身を読み取る正当な理由はありますか? これが他のセクション (.rdata など) の目的だと思いました。
(具体的には、 について話していIMAGE_SCN_MEM_READ
ます。)
.net - 必要に応じてUSBドライブから.NETFrameworkをインストールする
USBドライブを介して配布される.NETアプリケーションがあります。エンドユーザーはドライブを接続し、EXE(.NET exe)をダブルクリックして、インストールせずに実行します。
ここで問題となるのは、.NETがインストールされていない場合、MSがそこに置いたデフォルトのダウンロードメッセージを表示する代わりに、.NETインストーラーをトリガーしたいということです。インストーラーは、USBを介してアプリケーションとともに配布されます。
これを行う1つの方法は、.NET実行可能ファイルのPEスタブファイルを置き換えることです。しかし、C#コンパイラで/ STUBスイッチが表示されていません(Cコンパイラにはありましたが)。
他に誰かが考えることができるものはありますか?
更新:Tim Robinsonのおかげで、WindowsがPEスタブファイルを処理しないことを理解しています。したがって、ClickOnceソリューションが残っている唯一の実行可能なソリューションのようです。ClickOnceをチェックします。
c++ - PE ファイルの MZ 署名は何のためのものですか?
PE オブジェクトを解析してさまざまな情報を取得するプログラムに取り組んでいます。
ただし、仕様を読んでも、MZ バイトが存在する理由がわかりません。これらの 2 バイトが表すマシン タイプのリストにこれが見つからないからです。
誰でも明確にできますか?
c# - スクリプト可能なWindows逆アセンブラ[cygwin以外]
私は現在、リバースエンジニアリングとグラフ理論を組み合わせたものを実装しようとしています。したがって、PEバイナリを分解したいと思います。IDAやw32dasmなど、これを行うための非常に洗練されたツールがいくつかあります。後者は死んでいるようです。私の知る限り、IDAはスクリプト化できません。
スクリプト可能な逆アセンブラが必要な理由は、プログラムをC#で実装するためです。バイナリを取得するため、何らかの方法でオペコードを取得する必要があります。議論のある支援プログラムを呼び出す必要があると思います。GUIなしではIDAを呼び出すことはできません。実際のコマンドラインオプションは提供していません。
何か案は?
ありがとう、ウィッシー